私はこのDBを持っている:このクエリを正しく構築するにはどうすればよいですか?これは適切なMySqlスキームですか?
* 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';
:
これは私がやっているのですか?私は重複をたくさんしているし、それらのすべてが同じ量を持っています...
ありがとう!
このコードの結合はうまくいくようですが、これはWHERE net_sales.account_id = 40394として実行されるコードではなく、net_sales.account_id = '2016-01-01'はゼロの行を返し、net_sales.account_idは両方になることはできません。 P .:なぜ払い戻しはいつも販売と同じ日に行われますか? – Matijs
テーブルはその日に置かれた取引のもので、払い戻しが当日の売り上げであったわけではありませんが、その日に発行されたものです。では、正しく引き出すためにクエリをどのように構築する必要がありますか? – Kitara
この問合せが行をまったく返すことができないため、実行した問合せではなく、これについての私のコメントの最初の部分をお読みください。 – Matijs