您發佈的查詢不會運行;您需要按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