我将如何进行以下操作?
给出表,Recipe,RecipeItem,RecipeInstruction。如果只有Recipe的SELECT语句返回结果,我该如何执行SELECT。
如果存在Recipe,则返回RecipeItems并返回RecipeInstructions。
答案 0 :(得分:2)
不确定这是否是您正在寻找的,但假设有关键关系,请选择表单的语句:
SELECT ri.* FROM Recipe r
JOIN RecipeItem ri ON ri.RecipeID = r.RecipeID
WHERE r.Name = @myName -- or other criteria
SELECT ris.* FROM Recipe r
JOIN RecipeInstructions ris ON ris.RecipeID = r.RecipeID
WHERE r.Name = @myName -- or other criteria
...仅在存在配方ID时才会返回配方详细信息。这是使用SQL检索子项的标准方法。
答案 1 :(得分:0)
你想要一个INNER JOIN:
SELECT *
FROM Recipe
INNER JOIN RecipeItem ON RecipeItem.RecipeID = Recipe.RecipeID
INNER JOIN RecipeInstruction ON RecipeInstruction.RecipeID = Recipe.RecipeID
WHERE Recipe.[Name] = 'the recipe name'
这假设RecipeItem
和RecipeInstruction
都有一个名为RecipeID
的foriegn密钥,将其链接回主Recipe
表。
答案 2 :(得分:0)
这是一个开始,但你的问题不明确:
Select RI.*
, RInst.*
From Recipe AS R
inner join RecipeItem AS RI
on R.PK = RI.FK
inner join RecipeInstruction AS RInst
on R.PK = RInst.FK
主键(PK)需要以某种方式匹配这些表之间的外键(FK)字段。我打算建议列出一些字段。