gpt4 book ai didi

php - 两个表上的左连接和求和,MYSQL

转载 作者:行者123 更新时间:2023-11-29 21:00:21 24 4
gpt4 key购买 nike

我有一个包含有关某个项目的信息的表,以及另一个引用该项目的所有者的表,如下所示:

baseItem
--------
itemID | 1 | 2 | 3 | 4 |
itemSize | 5 | 1 | 5 | 3 |
itemCost | 100 | 50 | 1 | 99 |

itemOwner
--------
ownerID | 1 | 1 | 3
itemID | 1 | 4 | 2

我想要的是基于所有者的 itemSize 和 itemCOST 的总和。我环顾四周,但我看到的答案都没有道理?这是我能想到的最好的方法,但显然行不通:

SUM itemCost FROM baseItem.itemCost LEFT JOIN itemID ON itemOwner.itemid = baseItem.itemid

最佳答案

SELECT ownerId, sum(itemCost) as OwnerCost,  sum(itemSize) as OwnerSize
FROM itemOwner
LEFT JOIN baseItem
ON itemOwner.itemid = baseItem.itemid
GROUP BY ownerId

SELECT 语句列出了您想要从表中读取的字段;在这种情况下,您需要两个值:所有者的 id 以及他们拥有的项目的值总和。但是,由于您使用的是 sum(聚合函数),因此您必须通过某些参数对元素进行GROUP。在本例中,您希望按 ownerId 对它们进行分组。

FROM 子句引用一个表;您可以从 baseItemitemOwner 开始,在这种情况下没有区别。您可以将 LEFT JOIN 视为创建一个新表的笛卡尔积,其中包含两者笛卡尔积中的每个元素,并通过 ON 子句进行过滤。但是,左表中始终包含 itemOwner 中的所有项目,并且当 baseItem 中没有匹配行时,所有字段都将为 NULL。 SUM 函数的作用就好像这些都是 0,并且对于 baseItem 表中不匹配的行应返回 0 总和。

关于php - 两个表上的左连接和求和,MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37288476/

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