[英]Use subselect results at WHERE clause
我想合並這兩個選擇,但是我對SQL不太滿意。 我想在第二個選擇中使用第一個選擇的這兩列(sAuftrag,sInfo1)的結果數據。
我必須通過知道SQL命令的OLEDB接口使用MS-Access DB。
首先選擇:
SELECT DISTINCT sAuftrag, sInfo1 FROM tblStückliste
結果是(count = 32):
BA15.00929 22
BA15.00929 6, .... ("BA15.00929" is sAuftrag, and "22" is sInfo1)
對於這32個結果,我用WHERE子句中的接收數據進行第二次選擇。
第二選擇:
SELECT ID, (dwStückzahl*dwLänge) AS dwLaufmeter, dwDicke, dwBreite
FROM tblStückliste
WHERE sAuftrag = 'BA15.00929' AND sInfo1 = '22'
結果是(每次選擇計數= 1-4):
209 34860 17 78
210 47250 17 78
211 110250 17 78
....up to four
我嘗試了多種方法來找到解決方案,例如
SELECT ID, (dwStückzahl*dwLänge) AS dwLaufmeter, dwDicke, dwBreite, SS.sAuftrag, SS.sInfo1
FROM tblStückliste,
(SELECT DISTINCT sAuftrag, sInfo1 FROM tblStückliste) SS
WHERE sAuftrag = SS.sAuftrag AND sInfo1 = SS.sInfo1
編輯:#########################
好的,我的表中的條目屬於同一類。 這些條目可以通過字段sAuftrag和sInfo1進行標識。 因此,您可以將其稱為組,我的表中有一組條目。 下一步是計算(dwStückzahl*dwLänge)AS dwLaufmeter,並獲取每個條目的ID,dwDicke,dwBreite。
另外,我想將一個組中所有條目的dwLaufmeter相加。
目標應該是了解每個組的dwLaufmeter以及組中所有條目的所有ID。
那里的這兩個選擇可以為我提供正確的數據,但是我想在一個SELECT語句中進行操作。
看來這是您的解決方案:
SELECT ID, (dwStückzahl*dwLänge) AS dwLaufmeter, dwDicke, dwBreite, SS.sAuftrag, SS.sInfo1
FROM tblStückliste,
(SELECT DISTINCT sAuftrag, sInfo1 FROM tblStückliste) SS
WHERE sAuftrag = SS.sAuftrag AND sInfo1 = SS.sInfo1
該查詢的作用是在tblStückliste和SS之間創建一個INNER JOIN
但是,請注意,“最佳實踐”是使用“明示連接”語法,寫查詢的更好方法是:
SELECT ID, (dwStückzahl*dwLänge) AS dwLaufmeter, dwDicke, dwBreite, SS.sAuftrag, SS.sInfo1 FROM tblStückliste INNER JOIN (SELECT DISTINCT sAuftrag, sInfo1 FROM tblStückliste) SS ON sAuftrag = SS.sAuftrag AND sInfo1 = SS.sInfo1
另外,您應在每個列引用前加上表名或表別名
SELECT T.ID, (T.dwStückzahl*T.dwLänge) AS dwLaufmeter, T.dwDicke, T.dwBreite, SS.sAuftrag, SS.sInfo1 FROM tblStückliste T INNER JOIN (SELECT DISTINCT sAuftrag, sInfo1 FROM tblStückliste) SS ON T.sAuftrag = SS.sAuftrag AND T.sInfo1 = SS.sInfo1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.