簡體   English   中英

在WHERE子句中使用子選擇結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM