以下任务是否可以完全在SQL脚本中完成?
我的数据库保存食谱。我想要做的是作为成分线的子部分。哪个没问题。我可以撤回这样的事情:
RECIPE LINE INGREDIENT DESC
Cake1 1 Sugar Sugar
Cake1 2 CakeMix PreMix for a Cake
Cake1 3 Water Water
然而,在这个例子中,第2行实际上是名为CakeMix的配方,并且被用作Cake1中的一个成分。 CakeMix出现在与其自己的配方相同的表中的其他位置,如下所示:
RECIPE LINE INGREDIENT DESC
CakeMix 1 Mix1 Line one of Mix
CakeMix 2 Mix2 Line two of Mix
所以我想要的是某种 IF语句,它会在顶层表的搜索结果中搜索关键词,然后说#14; PreMix"然后将该配方ID放入另一个select语句中以拉出第二个表并将其组合成以下内容:
RECIPE LINE INGREDIENT DESC
Cake1 1 Sugar Sugar
CakeMix 1 Mix1 Line one of Mix
CakeMix 2 Mix2 Line two of Mix
Cake1 3 Water Water
有没有办法在SQL中完全执行此操作?
答案 0 :(得分:0)
您可以通过多种方式完成此操作。首先想到的两个是CTE和在TSql中使用变量。
CTE方法
WITH cteFirstLine(RecipeID)
AS
(
SELECT RecipeID FROM TblMixes WHERE DESC LIKE 'Premix%'
)
SELECT * FROM TblRecipes r
JOIN cteFirstLine f ON f.RecipeID=r.RecipeID
TSQL中的变量
DECLARE @recipeID INT
SELECT @recipeID=RecipeID FROM TblMixes WHERE DESC LIKE 'Premix%' AND Recipe = 'Cake1'
SELECT * FROM TblRecipes WHERE RecipeID=@recipeID