gpt4 book ai didi

mysql - 在 WHERE 子句中使用子查询结果

转载 作者:行者123 更新时间:2023-11-29 10:37:07 26 4
gpt4 key购买 nike

我想合并这两个选择,但我不太熟悉 SQL。我想在第二次选择时使用第一次选择的这两列(sAuftrag、sInfo1)的结果数据。

我必须通过了解 SQL 命令的 OLEDB 接口(interface)来使用 MS-Access DB。

首先选择:

SELECT DISTINCT sAuftrag, sInfo1 FROM tblStückliste 

结果为(计数=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.sInfo1FROM tblStücklisteINNER 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.sInfo1FROM tblStückliste TINNER JOIN (SELECT DISTINCT sAuftrag, sInfo1 FROM tblStückliste) SS       ON T.sAuftrag = SS.sAuftrag AND T.sInfo1 = SS.sInfo1

关于mysql - 在 WHERE 子句中使用子查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46232999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com