2014-10-08 30 views
0

我有两个表,ratingbusiness我如何离开聚合函数的连接?

rating表:

bussId userId  rating 
---------------------------- 
    5   454  3 
    8   684  5 
    8   102  2 

business表:

bussId  businessName 
----------------------- 
    5   name1 
    8   name2 

我想要得到bussName和它的评级与此查询:

SELECT business.businessName, 
COUNT(rating.rating) as ratingCount, 
SUM(rating.rating)as ratingSum 
FROM business 
LEFT JOIN (business.bussId = rating.bussId) 
WHERE 1 

不幸的是我只是一个当我使用聚合函数行吗?为什么会发生?

+0

您没有使用“分组依据”;你可能想要在'Coalesce(rating.rating,0)'中包装'rating.rating'; “Where”条款是毫无意义的;这是甚至有效的“左连接”语法?我从来没有见过这样做过的“左连接”。 – Siyual 2014-10-08 14:44:13

回答

1

那么你有一些语法问题。您的FROM子句与LEFT JOIN缺少对rating表的加入。您缺少JOIN的ON子句。由于您正在汇总数据,因此缺少GROUP BY。查询应该是:

SELECT 
    business.businessName, 
COUNT(rating.rating) as ratingCount, 
SUM(rating.rating) as ratingSum 
FROM business 
LEFT JOIN rating 
    ON business.bussId = rating.bussId 
GROUP BY business.businessName; 

请参阅SQL Fiddle with Demo。如果你的聚合函数没有使用GROUP BY,那么你将不会返回每个businessName的数据,MySQL将选择一个返回值。

注意:我删除了WHERE 1子句,因为它不需要。你没有过滤任何东西。