gpt4 book ai didi

mysql - 如何正确构建这个查询?这是一个合适的 MySql 方案吗?

转载 作者:行者123 更新时间:2023-11-29 20:16:39 25 4
gpt4 key购买 nike

我有这个数据库:

* net_sales
account_id (pk)
date (pk)
amount

* refund
account_id (pk)
date (pk)
amount

* fees
account_id (pk)
date (pk)
amount

* adjustment_3rd_party
account_id (pk)
date (pk)
amount

* corporate_charges
account_id (pk)
date (pk)
amount

虽然它们共享相同的 pk,但如果有新的变量需要考虑(这可能会),我会分开,但我不需要继续向表中添加列,而是可以创建另一个表并连接它们。

这就是我正在做的事情:

SELECT net_sales.amount, refund.amount, fees.amount, adjustment_3rd_party.amount, corporate_charges.amount
FROM net_sales
LEFT JOIN refund ON (refund.date = net_sales.date AND refund.account_id = net_sales.account_id)
LEFT JOIN fees ON (fees.date = net_sales.date AND fees.account_id = net_sales.account_id)
LEFT JOIN adjustment_3rd_party ON (adjustment_3rd_party.date = net_sales.date AND adjustment_3rd_party.account_id = net_sales.account_id)
LEFT JOIN corporate_charges ON (corporate_charges.date = net_sales.date AND corporate_charges.account_id = net_sales.account_id)
WHERE net_sales.account_id = 40394 AND net_sales.date = '2016-01-01';

我做错了什么吗?我收到了很多重复项,而且它们的数量都相同...

谢谢!

最佳答案

看起来问题不在于查询,而在于您的数据。

如果您对于一个 net_sales account_id 和日期组合有两项退款金额和两项费用金额,则此查询将返回四行,其中每个退款行与每个费用行都有唯一的组合。换句话说,它可能会按照您描述的方式爆炸。

这意味着您的某些表包含重复的行,即对于此 account_id 和日期组合,它们返回不止一行。

换句话说:不强制执行主键。

关于mysql - 如何正确构建这个查询?这是一个合适的 MySql 方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39729410/

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