2011-09-21 139 views
0

我有两个表。一个带有商店和他们的ID(shop_id) 的列表,以及具有他们工作的商店的ID(shop_id)的雇员的列表。SQL查询:HAVING,GROUP BY

我必须打印出每个员工与特定的位置形成某个商店。 我的查询通常是正确的,但我似乎得到像tblEmployees一样的错误。

通常我的查询看起来像这样。

SELECT tblEmployees.Name, tblEmployees.Surname, tblShops.shop_id 
FROM tblEmployees, tblShops 
GROUP BY tblEmployees.shop_id 
HAVING tblEmployees.shop_id = tblShops.shop_id; 

通常我得到一个错误说是这样的:

tblEmployees.Name是一个非集合函数的一部分。

我想知道的是如果它能解决我的问题,如果我把每一列都给出了这个错误在GROUP BY语句下。或者是否有另一种解决这个错误的方法,而不影响我从这个查询中得到的结果。

回答

10

删除GROUP BYHAVING条款。你不在这里汇总。你想加入你的桌子。

SELECT tblEmployees.Name, Surname, tblShops.shop_id 
FROM tblEmployees JOIN tblShops 
ON tblEmployees.shop_id=tblShops.shop_id 
+0

我想这不是一个很好的例子,但是我们要说我不得不这样做查询,也只选择与更多的COUNT(tblEmployees.id)>商店5 –

+0

然后你会想组其他栏目。 'tblEmployees.shop_id = tblShops.shop_id SELECT name,surname,tblEmployees.shopid GROUP BY name,surname,tblEmployees.shop_id HAVING COUNT(tblEmployees.id)> 5;' –