我想合并这两个选项,但我对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语句中这样做。
答案 0 :(得分:1)
这似乎是你的解决方案:
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
但是,请注意“最佳实践”是使用“explict 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