私はここでかなり明白な何かを見逃していると思います。MySQLのWHERE句の結果を比較する
私は総額が予約の合計金額よりも高い「予約」のリストを表示しようとしています。料金と支払いは、外部キーを使用してリンクされた別々のテーブルに格納されます。これまで
私のクエリです:
SELECT `booking`.`id`,
SUM(`booking_charge`.`amount`) AS `charges`,
SUM(`booking_payment`.`amount`) AS `payments`
FROM `booking`
LEFT JOIN `booking_charge` ON `booking`.`id` = `booking_charge`.`booking_id`
LEFT JOIN `booking_payment` ON `booking`.`id` = `booking_payment`.`booking_id`
WHERE `charges` > `payments` ///this is the incorrect part
GROUP BY `booking`.`id`
私のテーブルはこのような何かを見て:
Booking (ID)
Booking_Charge (Booking_ID, Amount)
Booking_Payment (Booking_ID, Amount)
をMySQLのは、これら2つのテーブルの結果を比較したいとしていないようです、私は何が欠けているのか分からないが、それは可能なことだと確信している。
エラーはありません?、名前はあいまいではありませんか? – Saikios
私はそれも、 'booking_charge'と' booking_payment'テーブル名を 'amount'の前に置くことになったと思いました。 しかし、それはいずれにせよ役立たないようです。 SQLは 'where句'のUnknownカラム 'charges'について不平を言っています...なぜなら、 'charges 'はクエリ自体の間にカラムとして作成されるからです。 –
最後に「WHERE charges> payments'を削除し、「HAVING charges> payments」を追加してください。 –