解决数据库三表联查可能遇到的错误,如count计数结果为两个关联表的乘积等,也希望有大佬能在此基础上进一步指点优化。

本文讲述了在处理数据库三表联查时遇到的计数错误,即结果为两个关联表的乘积。通过逐步分析和尝试,找到了解决方案:先统计访问量生成中间表,再与评分表关联,从而获取每个应用的访问量和评分。对于查询性能问题,作者希望有经验的大佬提供进一步的优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 三张表分别存应用基本信息,应用的访问情况,应用的评分。准备实现通过一个sql语句同时得到每个应用的访问量及评分,并取访问量最高的十个。所以通过三表联查的方式。

    本人算是出学者,着实花了一段时间才正确实现这个功能,希望能有大佬可以进一步优化sql语句。

    具体建表语句就不放在这儿了大致是: 一张基本信息表 TB_APP 包含唯一标识 ‘id’ 及名称
    ‘name’,一条数据相当于一个应用APP。 一张访问量表
    TB_APP_VISITAPP包含本表的唯一标识‘id’;所访问的APP的id,字段名为‘appid’。通过appid 关联
    TB_APP的id。相当于访问一次某个APP就插入一条数据用来根据appid统计访问量。 一张评分表TB_SCORE
    包含包含本表的唯一标识‘id’;分数‘score’;所对应的APP的id,字段名为‘appid’。对某个APP可以无限次打分,根据appid统计计算score字段的平均分。

1.首先看一下只统计访问量的结果。
仅查询访问量

select *
  from (select app.id,
               app.name,
               count(t.appid) visitCount
          from TB_APP app
          left join TB_APP_VISITAPP t
            on t.appid = app.id
         where app.apptype = '1'
         group by app.id, app.name
         order by visitCount desc)
 where rownum < 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值