2010-02-26 180 views
-3

我将如何去做以下事情?SQL条件选择语句

给定表格,配方,配方项目,配方指令。只有在配方的SELECT语句返回结果时,我该如何执行SELECT。

如果食谱存在,则返回RecipeItems并返回RecipeInstructions。

+2

不太确定你在这里问什么。更多详情? – Andrew 2010-02-26 02:46:17

+0

如果食谱不存在,SELECT将不返回任何行。这与“只有在食谱的SELECT语句返回结果”时才是一样的吗? – 2010-02-26 02:49:23

+0

如何列出一些字段以显示他们如何相关/加入?这是任何特定类型的数据库吗? – JeffO 2010-02-26 02:57:30

回答

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检索子项的标准方法。

+0

谢谢先生,那就是我正在寻找的。是的,配方是父实体,RecipeItem和RecipeInstruction包含配方的外键。 – Solaris 2010-02-26 02:56:18

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' 

这是假设两者RecipeItemRecipeInstruction有一个叫做RecipeID一个foriegn关键链接回主Recipe表。

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)领域。我会建议列出一些字段。