私は2つのテーブルを持っています
Bills
:id amount reference
Transactions
:id reference amount
次の SQL クエリ
SELECT
*,
(SELECT SUM(amount)
FROM transactions
WHERE transactions.reference = bils.reference) AS paid
FROM bills
GROUP BY id HAVING paid<amount
table のいくつかの行を対象とし、関連するトランザクションの合計額をBills
含む列を追加しました。paid
ただし、各請求書に対して少なくとも 1 つのトランザクションがある場合にのみ機能します。それ以外の場合、トランザクションのない請求書の行は返されません。
おそらく、それは内部結合を行うべきだったからです!
だから私は次のことを試します:
SELECT
*,
(SELECT SUM(transactions.amount)
FROM transactions
INNER JOIN bills ON transactions.reference = bills.reference) AS paid
FROM bills
GROUP BY id
HAVING paid < amount
ただし、これはすべての行に対して同じ値の支払済みを返します! 私は何を間違っていますか?