gpt4 book ai didi

MySQL 查询 3 表内部连接只返回 1 行

转载 作者:行者123 更新时间:2023-11-30 22:13:37 25 4
gpt4 key购买 nike

我正在 Magento 模块中创建一些自定义报告,我正在努力处理这个模块中的 SQL。我将 SQL 放在下面,基本上,我希望它为“donor”表中的每一行返回一行。它基本上是获取具有特定属性的产品的销售总值。

SELECT b.entity_id AS 'Car ID', b.car_name AS 'Car Name', b.car_purchase_price AS 'Car Purchased For', SUM(s.price) AS 'Total Sales' 
FROM sales_flat_order_item AS s
INNER JOIN catalog_product_entity_int AS c ON s.sku = c.entity_id
INNER JOIN bs_donor AS b ON c.value = b.entity_id
WHERE c.attribute_id = '971'

这行得通,但只返回 1 行,即使 bs_donor 表中有大约 20 行,它还返回所有产品的总销售额,而不仅仅是具有该特定属性集的产品.如果我将其添加到查询的末尾:

AND c.value = '50'

它获得了正确的数据,这正是我所需要的,但显然只是针对 ID 为“50”的 bs_donor 行或我在那里设置的任何内容。我假设内部联接中存在错误,并尝试使用嵌套子查询,但只是迷路了。

我认为这可能是因为我从 sales_flat_order_item 而不是 bs_donor 获取数据,但我无法以任何其他方式运行它。

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

最佳答案

您可以颠倒执行连接的顺序,这样 bs_donor 表首先出现。然后使用 LEFT JOIN 而不是 INNER JOIN 来确保来自 bs_donor 的每条记录都出现在结果集中。

SELECT b.entity_id AS 'Car ID',
SUM(s.price) AS 'Total Sales'
FROM bs_donor b
LEFT JOIN catalog_product_entity_int c
ON c.value = b.entity_id
LEFT JOIN sales_flat_order_item s
ON s.sku = c.entity_id
WHERE c.attribute_id = '971'
GROUP BY b.entity_id

关于MySQL 查询 3 表内部连接只返回 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39239088/

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