這可能嗎?如果是這樣,我如何構建我的SELECT語句以實現這些結果?PHP MySQL在多個表上選擇查詢
我在一個PHP文件中創建一個HTML表格,該文件從MySQL數據庫中獲取各種行。這是我的查詢:
// Define the query:
$query = "SELECT b.birdID, b.nameGeneral, b.nameSpecific,
b.genus, b.species, b.family, b.populationTrend, f.food, h.habitat
FROM bird_habitat AS bh
JOIN bird_food AS bf ON (bf.birdID_FK = bh.birdID_FK)
JOIN food AS f ON (f.foodID = bf.foodID_FK)
JOIN habitat AS h ON (h.habitatID = bh.habitatID_FK)
JOIN birds AS b ON (b.birdID = bh.birdID_FK AND b.birdID = bf.birdID_FK)
ORDER BY b.birdID ASC";
問題是與bird_habitat和bird_food表。每隻鳥可以有兩種不同的食物,它們可以吃,也可以住在2個不同的棲息地。例如,黑鳥可以吃種子和昆蟲,生活在沼澤和田野。當我運行SELECT語句時,我得到4個結果,每個鳥只有2個結果。使用黑鳥例子,我得到這些返回的行:
**Bird** **Food** **Habitat**
1 Seeds Marsh
1 Insects Marsh
1 Seeds Field
1 Insects Field
我想要得到的返回是這樣的:
**Bird #** **Food** **Habitat**
1 Seeds Marsh
1 Insects Field
所以基本上,我想回到獨特的食物,每個鳥可以吃,他們可以居住的獨特的棲息地沒有冗餘的領域重複。這可能嗎?如果是這樣,我如何構建我的SELECT語句以實現這些結果?
這裏,如果你想看看從SELECT查詢返回上面,這樣你可以得到什麼,我試圖做一個更好的主意時顯示的HTML表格的網頁的鏈接:
http://www.jasonkmccoy.com/AB-Tech/web250/Mod07/McCoy_edit_delete/index.php
正如你將會看到,如果你訪問頁面,那裏有2種食物和2個棲息地的鳥類,我需要刪除2行,以便只返回唯一的字段。
非常感謝您的幫助。這裏的人是最好的,我從你們所有人那裏學到了很多東西(我是初學者,但我正在學習:)傑森
這有幫助,但它不會返回它應該如果你的結果回到http://www.jasonkmccoy.com/AB-Tech/web250/Mod07/McCoy_edit_delete/index.php頁面,你會發現一些鳥類的某些記錄根本沒有顯示出來(鳥類應該在每隻鳥至少一行2至31)。此外,這又爲鳥類帶來了獨特的食物,而不是獨特的棲息地。鳥2應該有2條記錄:1個應該有昆蟲和沼澤,另一個應該有種子和田地,現在兩行都有沼澤。 – HoppedUpDesigns
感謝你的幫助阿倫,但仍然不起作用 – HoppedUpDesigns
不,這仍然不起作用 – HoppedUpDesigns