您发布的查询不会运行;您需要按ID,nameOfPet进行分组。这是个人喜好,但我还要指定你参加(以使其更容易阅读和类型的加盟之间切换):
SELECT id, nameOfPet, COUNT(p.fed)
FROM petLover pl
LEFT OUTER JOIN pets p ON pl.nameOfPet = p.nameOfPet
WHERE id = 180
GROUP BY id, nameOfPet
ORDER BY COUNT(p.fed)
左外连接将确保你从petLover返回所有结果,即使没有喂食(即如果没有喂食,你将返回所有宠物插图)。如果您只需要饲喂动物的结果,请将其更改回INNER JOIN。这里有一个修改后的查询到你要找的内容(基于行):
SELECT pl.id, pl.nameOfPet, COUNT(*)
FROM petLover pl
LEFT OUTER JOIN pets p ON pl.nameOfPet = p.nameOfPet
GROUP BY pl.id, pl.nameOfPet
HAVING COUNT(*) >= ALL (
SELECT COUNT(*)
FROM petLover pl
LEFT OUTER JOIN pets p ON pl.nameOfPet = p.nameOfPet
GROUP BY pl.id, pl.nameOfPet
)
ORDER BY COUNT(*) DESC
编辑
进一步的答案,我在原来的评论的问题,您应该能够做到以下修改上面的SQL:
SELECT pl.id, pl.nameOfPet, SUM(p.fed)
FROM petLover pl
LEFT OUTER JOIN pets p ON pl.nameOfPet = p.nameOfPet
GROUP BY pl.id, pl.nameOfPet
HAVING SUM(p.fed) >= ALL (
SELECT SUM(p.fed)
FROM petLover pl
LEFT OUTER JOIN pets p ON pl.nameOfPet = p.nameOfPet
GROUP BY pl.id, pl.nameOfPet
)
ORDER BY SUM(p.fed) DESC
'MAX(fed)'是我想你需要的。 – hjpotter92 2012-07-08 09:47:57
什么决定了宠物被喂食的次数?它是一列吗?还是在宠物表中存在多少行?你可以发布你的表格模式吗? – 2012-07-08 09:49:06
发布它,因为你的查询是ambiguos。 – Samson 2012-07-08 09:50:49