2016-01-25 53 views
0

以下任務是否可以完全在SQL腳本中完成?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語句,搜索上表的結果的關鍵一句話說「預混合物」,然後會提出該配方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

您正在使用什麼數據庫? SQL Server,MySQL,Oracle等?看看如何解決物料清單問題:http://sqlblog.com/blogs/john_paul_cook/archive/2009/11/06/bill-of-materials-the-basics.aspx。 – zedfoxus

+0

嗨Im使用Microsft SQL Server Management Studio 2012. 輝煌的病態檢查現在。謝謝。 – user183200

+0

Aha,SSMS 2012是您的客戶。你的服務器是SQL Server。您可能需要使用表內親子關係來調整表格,以便爲物料清單查詢工作。你甚至可以谷歌物料清單SQL Server查看不同的查詢變化 – zedfoxus

回答

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 [email protected] 
+0

輝煌。非常感謝,我現在會給他們一個去。 – user183200