我想從3個連接的表中拉多個列,但我想結果集只包含一個不同的「數據條目」每p
。 id
(在數據輸入表中是外部關鍵字的寵物ID)。我遇到的問題是,可能有兩個數據條目,編號爲1和2,屬於一個寵物 - 查詢必須選擇最高數字的數據條目 - 這就是爲什麼我試圖使用max和group by,但它不起作用。任何人都可以看到我要去哪裏錯了嗎?非常感謝嘗試連接表,並選擇一個不同的最大值
SELECT `p`.`id`, `o`.`id`, `o`.`email`, MAX(d.number), `d`.`number`
FROM (`pets` AS `p`, `owners` AS `o`, `data_entries` AS `d`)
WHERE `p`.`owner_id` = `o`.`id`
AND `p`.`id` = `d`.`pet_id`
GROUP BY `p`.`id`
ORDER BY `d`.`number` DESC
編輯:以下iniju的建議,我想下面的查詢,但這並不不是篩選出的數據項,其中數字是比相同的寵物另一個數據項下:
SELECT `p`.`id`, `o`.`id`, `o`.`email`, `d`.`number`
FROM (`pets` AS `p`, `owners` AS `o`, `data_entries` AS `d`)
WHERE `p`.`owner_id` = `o`.`id`
AND `p`.`id` = `d`.`pet_id`
GROUP BY `p`.`id`, `o`.`id`, `o`.`email`, `d`.`number`
HAVING `d`.`number`=MAX(`d`.`number`)
實際上,您應該刪除'd'。'數字'都來自SELECT和GROUP BY – iniju 2010-08-12 22:15:10
嗨iniju - 我已經更新了您的建議查詢,但我需要過濾掉任何具有相同pet_id的結果 - 我的意思是隻選擇data_entry與最高的號碼 – franko75 2010-08-12 22:20:27
哦,我現在看到。然後在兩個位置保留'd'。'編號',並在GROUP BY部分後添加以下內容: HAVING'd'.'number' = MAX(d.number) – iniju 2010-08-12 22:57:57