【问题标题】:SQL Sum and Count JOIN Multiple tablesSQL Sum and Count JOIN 多个表
【发布时间】:2020-12-03 14:08:14
【问题描述】:

请帮忙,我想合并这两个查询

我有 3 个表格(地点、评分、地点图像)

地点

  • 身份证
  • 姓名
  • 说明

评分

  • 身份证
  • 评分
  • place_id
  • user_id

places_image

  • 身份证
  • place_id
  • 图片

这是两个查询:

SELECT places.*, SUM(rating) AS total_rating,COUNT(ratings.user_id) AS total_user FROM ratings, places WHERE ratings.place_id = places.id GROUP BY places.id
SELECT places.*, places_images.image FROM places, places_images WHERE places.id = places_images.place_id GROUP BY places.id

查询 1

查询 2

我尝试执行此查询,但它为 聚合 函数提供了重复数据

SELECT places.id, places.name, places.description, places_images.image ,SUM(rating) AS total_rating,COUNT(ratings.user_id) AS total_user FROM places_images JOIN places ON places_images.place_id = places.id JOIN ratings ON ratings.place_id = places.id GROUP BY places.id

查询 3

我该如何组合它?

【问题讨论】:

  • 您的第二个查询格式错误。 GROUP BY 列与未聚合的 SELECT 列不一致。问题不清楚。您应该提供样本数据、期望的结果,并清楚地解释所说的“组合”是什么意思。

标签: sql count sum multiple-tables


【解决方案1】:

你需要在place_id和user_id上使用2个Inner Join

会是这样的

SELECT SUM(r.rating) AS total_ratings, COUNT(r.user_id) AS total_users
FROM ratings r 
INNER JOIN places p ON p.id = r.user_id 
INNER JOIN places_image pi ON pi.place_id = r.place_id    
GROUP BY r.id

【讨论】:

  • 谢谢,但还是没有得到结果,它多次显示相同的总数和计数
  • 我得回家看看。我当前位置的图片被屏蔽了,所以我可以看到它们。也许您可以将我之前的答案嵌套在另一个 select 语句中并使用 DISTINCT 关键字。不确定您有多先进,但您应该能够查找嵌套查询和不同的查询。
【解决方案2】:

似乎我唯一需要的是子查询它

select a.*, d.image, b.totalRating, c.totalUser from places a, ( select place_id, sum(rating) AS totalRating from ratings group by place_id ) b, ( select place_id, count(id) AS totalUser from ratings group by place_id ) c, places_images d where c.place_id = a.id and b.place_id = a.id and d.place_id = a.id GROUP BY a.id

Result

非常感谢,GBU

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    相关资源
    最近更新 更多