2017-05-10 18 views
0

好了,所以我有我想加盟,共同SQL加入在不同的表

  • 表A中的主要细节和主键是row_id三(3)表自动递增
  • tableB的是exteded细节和主/外键是row_id从TABLEA未来
  • 表C卖场无序的评级和评论特定row_id

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

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 

此查询的结果结合了所有正确的,但同样的数量和平均显示在所有行。

+0

这不是PHP。不要将它标记为这样.. – clearshot66

+0

但是内容是mysql,并且不包括任何种类的php/php问题 – clearshot66

回答

1

看起来好像你想在内部查询中按row_id对记录进行分组。在这种情况下,你需要SELECTrow_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 
+0

就是这样,必须将'row_id'添加到子查询中。唯一的问题是它会导致行中的重复数据。但它应该适合我需要的东西。 –

+0

感谢您的快速响应! –

+0

要删除dups,您可能需要在外部查询中使用另一个GROUP BY。但是,如果不知道确切的输出结果,就很难评论。 –