gpt4 book ai didi

php - SQL Join 与子查询计算不同表中具有相同 id 的记录数

转载 作者:行者123 更新时间:2023-11-29 10:50:04 24 4
gpt4 key购买 nike

好的,我有三 (3) 个表想要连接在一起

  • tableA 是主要详细信息,主键是 row_id 自动递增
  • tableB 是扩展的详细信息,主/外键是来自 tableA 的 row_id
  • tableC 存储特定 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

此查询的结果正确组合所有内容,但所有行中显示相同的计数和平均值。

最佳答案

看起来您想在内部查询中按 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

关于php - SQL Join 与子查询计算不同表中具有相同 id 的记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43899588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com