繁体   English   中英

SQL Join和子查询对不同表中具有相同ID的记录数进行计数

[英]SQL Join with subquery counting number of records with the same id in a different table

好吧,我有三(3)个表要合并在一起

  • tableA是主要详细信息,主键是row_id自动递增的
  • tableB是扩展的详细信息,主键/外键是来自tableA的row_id
  • tableC存储特定row_id无序评分和注释

我想加入所有这些表,以便可以查看所有详细信息以及tableC中row_id和avg等级的实例数。

SELECT * 
FROM  `tableA` A
LEFT JOIN  `tableB` B 
      ON A.`row_id` = B.`row_id` 
LEFT JOIN (
     SELECT COUNT( 1 ) AS  'count', Avg(`row_rating`) AS  'avg'
     FROM  `tableC` 
     GROUP BY tableC.`row_id`
)C 
     ON C.`row_id` = A.`row_id` 

ORDER BY  C.`avg` ASC 

该查询的结果将所有正确但合并的计数合并在一起,并且在所有行中均显示avg。

看起来您想按内部查询中的row_id对记录进行row_id 在这种情况下,您需要SELECT row_id而不是COUNT(1) ,请尝试以下操作:

SELECT * 
FROM  `tableA` A
LEFT JOIN  `tableB` B 
      ON A.`row_id` = B.`row_id` 
LEFT JOIN (
     SELECT row_id, Avg(`row_rating`) AS  'avg'
     FROM  `tableC` 
     GROUP BY tableC.`row_id`
)C 
     ON C.`row_id` = A.`row_id` 

ORDER BY  C.`avg` ASC 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM