簡體   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