0

これは可能ですか?もしそうなら、これらの結果を達成するために SELECT ステートメントをどのように構成すればよいでしょうか?

MySQL データベースからさまざまな行を取得する HTML テーブルを PHP ファイルに作成しています。これは私のクエリです:

     // 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 つの異なる餌を食べることができ、2 つの異なる生息地に住むこともできます。たとえば、クロウタドリは種子や昆虫を食べ、湿地や野原に住むことができます。SELECT ステートメントを実行すると、2 つの結果だけを取得したい鳥ごとに 4 つの結果が得られます。ブラックバードの例を使用すると、次の行が返されます。

**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 つの行を削除する必要があります。

4

1 に答える 1

0
"SELECT b.birdID, b.nameGeneral, b.nameSpecific, 
b.genus, b.species, b.family, b.populationTrend, f.food, h.habitat 
FROM birds  
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 bird_habitat AS bh  ON (b.birdID = bh.birdID_FK ) 
group by f.foodID
ORDER BY b.birdID ASC";
于 2012-10-20T06:53:47.660 に答える