gpt4 book ai didi

mysql - 如何计算出 MySQL 查询的正确逻辑

转载 作者:行者123 更新时间:2023-11-29 19:03:58 27 4
gpt4 key购买 nike

我有一个为我生成销售报告的模块,它有多个用于过滤数据的选项。基本查询是

SELECT DISTINCT o.orders_id from orders o 
WHERE o.date_purchased >= '2017-01-01 00:00:00'
AND o.date_purchased < '2017-04-28 00:00:00';

如果我只想搜索英国境内的销售情况,则会添加

AND FIND_IN_SET (o.customers_country, 'United Kingdom')

我希望能够按自定义 ID 进行过滤,以便生成仅查看特定产品的报告。该 id 存储在

products_with_attributes_stock.customid

我提供了一个表列表,其中包含交叉引用以收集 customid 所需的数据。见下图:

Tables and column relationship

我可以执行多个查询,并使用一个查询的结果来过滤下一个查询的结果,直到获得 customid,但这看起来相当笨拙。

我认为可以使用 INNER JOIN 来完成,但说实话,我对如何将所有表和匹配列连接在一起感到很困惑。

任何帮助了解如何实现这一目标的帮助将不胜感激,因为我需要对其他过滤选项做更多相同的事情。

最佳答案

我解决了这个问题。

我写的最终查询是:

SELECT DISTINCT o.orders_id from orders o
LEFT JOIN orders_products op ON o.orders_id = op.orders_id
LEFT JOIN orders_products_attributes opa ON o.orders_id = opa.orders_id
AND op.orders_products_id = opa.orders_products_id
LEFT JOIN products_attributes pa ON opa.products_options_id = pa.options_id
AND opa.products_options_values_id = pa.options_values_id
LEFT JOIN products_with_attributes_stock pas ON op.products_id = pas.products_id
AND pa.products_attributes_id = pas.stock_attributes
WHERE customid = '00038-16-00008'
AND o.date_purchased >= '2017-04-25 00:00:00' AND o.date_purchased < '2017-04-26 00:00:00'
ORDER BY o.orders_id DESC

关于mysql - 如何计算出 MySQL 查询的正确逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43661791/

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