gpt4 book ai didi

具有多个连接的Mysql查询

转载 作者:行者123 更新时间:2023-11-29 02:17:05 25 4
gpt4 key购买 nike

我有以下表格,并希望得到如下结果

Table po
ID | Date
1 | 20-Jun-2016

Table podetails
ID | poid | itemcode | quantity
1 | 1 | SOAP123 | 100

Table poreceived
ID | poid | itemcode | quantity
1 | 1 | SOAP123 | 20
2 | 1 | SOAP123 | 60

结果应该是:

PO | Date        | itemcode | quantity
1 | 20-Jun-2016 | SOAP123 | 80

我所做的是:

SELECT 
po.id, podetails.itemcode, poreceived.quantity
FROM
po
LEFT JOIN
podetails ON podetails.poid = po.id
LEFT JOIN
poreceived ON poreceived.poid = podetails.poid

但结果并不是我所期望的。

如有任何帮助,我们将不胜感激。

最佳答案

看起来您需要通过poidporeceived 表进行聚合。您可以为此使用子查询:

SELECT po.id, COALESCE(podetails.itemcode, 'NA'), COALESCE(t.quantity, 0)
FROM po
LEFT JOIN podetails
ON podetails.poid = po.id
LEFT JOIN
(
SELECT poid, itemcode, SUM(quantity) AS quantity
FROM poreceived
GROUP BY poid, itemcode
) t
ON t.poid = podetails.poid AND t.itemcode = podetails.itemcode

除了聚合问题,您的查询策略看起来是正确的。我还将 COALESCE 添加到 podetailsporeceived 表中的列,以防 po 中的 id 不匹配对任何事。

关于具有多个连接的Mysql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37915177/

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