2

次の構造を持つ3つの異なるテーブルがあります。

食べ物

ID | title
---+----------
1  | sandwich
2  | spaghetti

成分

ID  | food_reference | type | location | bought
----+----------------+------+----------+----------
100 | 1              | ham  | storeA   | 11-1-2013
101 | 1              | jam  | storeB   | 11-1-2013
102 | 2              | tuna | storeB   | 11-6-2013

タグ

ID  | food_reference | tag 
----+----------------+-----
1000| 1              | Tag
1001| 1              | Tag2  
1002| 2              | fish 

そして、1 つの選択を使用して、1 つの特定の ID について、これら 3 つのテーブル (タイトル、タイプ、場所、購入、タグ) からすべての情報を取得したいと考えています。私は次のようなことを試しました

SELECT food.*,ingridients.*,tags.* FROM food  
            JOIN ingridients
                ON :id=ingridients.food_reference
            JOIN tags
                ON :id=tags.food_reference
            WHERE id=:id

しかし、このクエリは id=1 に対して ingridients と tags から 1 行のみを返しますが、2 つの一致する行 (ham と jam、Tag と Tag2) があります。私が間違っていることを教えていただけますか?

編集: LolCoder のソリューションを試しましたが、フィドルでは機能しているように見えますが、まだ 1 つの結果しか得られませんでした。しかし、私は試しました:

 SELECT F.*, group_concat(I.type), group_concat(I.location), 
   group_concat(I.bought), group_concat(T.tag) 
 FROM feeds F 
 INNER JOIN ingridients I 
   ON :id = I.food_reference
 INNER JOIN tags T
   ON :id=T.food_reference
 WHERE F.id=:id 

これはすべての一致する行からデータを検索しますが、数回、つまり (id=1 の場合) サンドイッチ、ハム、ハム、ハム、ジャム、ジャム、ジャム、タグ、タグ、タグ、タグ 2、タグ 2、タグ 2 を取得します。

EDIT2:魔法が起こり、LolCoderのソリューションが機能するので、ありがとう:-)

4

2 に答える 2

1

次のクエリを試してください。

SELECT food.*,ingridients.*,tags.* FROM food  
            JOIN ingridients
                ON food.id=ingridients.food_reference
            JOIN tags
                ON food.id=tags.food_reference
            WHERE food.id=1

SQLFIDDLE を確認する

于 2013-09-29T09:33:23.023 に答える
-2

as.column name と結合してエイリアスを使用する

于 2013-09-29T09:24:28.027 に答える