2017-10-12 6 views
1

私はレシピデータベースを持っています。しかし、おしっこ必要がちょうど3つのテーブルを見て:DBに複雑なPKテーブルがある場合、正しいデータを選択

[Recipe] 
ID (PK) 
Name 
<...> 


[RecipeIngredient] 
IDRecipe 
IDIngred 
Quantity 
(IDRecipe, IDIngred) - PK 

[Ingredient] 
ID (PK) 
Name 
Units 

は、だから私は私のクエリは

SELECT [Name], [Quantity], [Units] FROM [Ingredient], [RecipeIngredient] 
WHERE [ID] = ANY 
    (SELECT [IDIngred] FROM [RecipeIngredient] WHERE [IDRecipe] = 
    (SELECT [ID] FROM [Recipe] WHERE [Name] = 'RecipeName1')); 

しかし、何がある

[Name] [Quantity] [Units] 
ingr1  50   gr. 
ingr2  100   ml. 
ingr3  1   kg. 

のように見える特定のレシピ名用のテーブルを取得したいです私は得る

[Name] [Quantity] [Units] 
ingr1  50   gr. 
ingr1  100   ml. 
ingr1  1   kg. 
ingr2  50   gr. 
ingr2  100   ml. 
ingr2  1   kg. 
ingr3  50   gr. 
ingr3  100   ml. 
ingr3  1   kg. 

どうすればこの問題を解決できますか?

+0

ヒント: 'JOIN'。そして、 'FROM'節でコンマを使うことは決してありません。 –

答えて

2

この文字列で検索してください:

SELECT I.[Name], RI.[Quantity], I.[Units] 
    FROM [RecipeIngredient] AS RI 
     LEFT JOIN [Recipe] AS R ON R.ID = RI.IDRecipe 
     LEFT JOIN [Ingredient] AS I ON I.ID = RI.IDIngred 
    WHERE R.Name = 'someRecipeName' 
+0

聖なるイエス!それはちょうど私が欲しかったように機能どうもありがとうございました! – Mex

0

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

SELECT Rec.Name, Ing.Name, Quantity, Units 
FROM Ingredient Ing 
Inner Join RecipeIngredient Ri 
on Ri.IDIngred = Ing.ID 
Inner Join Recipe Rec 
on Rec.ID = Ri.IDRecipe 
WHERE Rec.ID IN 
      (Select distinct ID from Recipe); 

上記のクエリは、1つずつ、特定のレシピとその特定のレシピのための成分の詳細の名前を返します。 。

希望すると助かります!

関連する問題