【发布时间】:2016-02-14 15:43:24
【问题描述】:
我有 3 个表,分别称为商店、服务和评级。
商店有
我需要在单个查询中获取带有服务和评分的商店详细信息。
我已经完成了这个查询
select shops.*, count(distinct rating.id) as rating_count,
sum(rating.rating) as total_rating,
GROUP_CONCAT(distinct services.servicename SEPARATOR " <=> ") as servicename
from shops
LEFT JOIN rating on rating.shop_id = shops.id
LEFT JOIN services on services.shop_id = shops.id
group by shops.id
但 shop1 的总评分为 21。但它显示为 42。
我需要正确的总评分以及该商店的所有服务。
检查这个fiddle
【问题讨论】:
-
为什么你的服务名称叫
shop1、shop2等?这让您的问题非常混乱。 -
@TimBiegeleisen 现已修复。
-
或许可以更优雅地写成如下sqlfiddle.com/#!9/ece82/29
-
或者如果你必须使用 GROUP_CONCAT (yuk):sqlfiddle.com/#!9/21077/4