0

次のフィールドを持つ 2 つのテーブルがあります:
...

orders.orderID
orders.orderValue

payments.orderID
payments.payVal

ではpayments.payVal、注文ごとに増分支払いが行われます (多対 1)。
必要なものなので、orders支払いが残っているところからすべての注文を選択して(orders.orderValue - ((sum)payments.payVal) > 0 )ください。

私が今思いつくことができるのは、を使用した (foreach)orderIDだけですが、特定の理由でそれを行うことができません。また、何らかの理由で値を保持するためにテーブル内に列を追加することもできません。

私が必要としているのは、このアイデアに似た単一の SQL クエリで選択全体を実行することです。SELECT * FROM orders WHERE <... each(orderValue - (sum(payVal))) > 0 ...>

4

2 に答える 2

-1

同じ解決策にたどり着いたようですが、

http://sqlfiddle.com/#!2/9a657/18

SELECT * FROM `orders`
LEFT JOIN `payments` AS p ON `orders`.`orderID` = p.`orderID`
GROUP BY `orders`.`orderID`
HAVING SUM(p.`payVal`) <= 0
于 2013-08-18T10:46:46.480 に答える