Оператор условного выбора SQL - PullRequest
0 голосов
/ 26 февраля 2010

Как мне поступить следующим образом?

С учетом таблиц Recipe, RecipeItem, RecipeInstruction. Как выполнить SELECT, только если инструкция SELECT рецепта вернула результаты.

Если рецепт существует, вернуть RecipeItems и вернуть RecipeInstructions.

Ответы [ 3 ]

2 голосов
/ 26 февраля 2010

Не уверен, что это то, что вы ищете, но при условии ключевых отношений выберите операторы вида:

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

... вернет детали рецепта, только если этот рецепт существует. Это стандартный способ получения дочерних элементов с помощью SQL.

0 голосов
/ 26 февраля 2010

Вот вам начало, но ваш вопрос не ясен:

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) между этими таблицами. Я собираюсь предложить перечисление некоторых полей.

0 голосов
/ 26 февраля 2010

Вы хотите, чтобы ВНУТРЕННЕЕ СОЕДИНЕНИЕ:

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, который связывает его с основной таблицей Recipe.

...