0

私はテーブルを持っています

ID | product | cuid | file     | created    | start_date | cancelled  | brid   | price
123| prod3   | 1234 | filename | 2012-09-19 | 2012-09-19 | 2012-09-19 | broker | 20
124| prod1   | 1234 | filename | 2012-09-19 | 2012-09-19 | 0000-00-00 | broker | 10
125| prod1   | 1234 | filename | 2012-09-19 | 2012-09-19 | 0000-00-00 | broker | 10
126| prod3   | 1234 | filename | 2012-09-19 | 2012-09-19 | 0000-00-00 | broker | 20

created、start_date、および cancel はすべて DateTime 列です。

以下を使用して、各製品の数、各製品の合計コスト、およびすべての製品の合計価格を計算するクエリを実行しています。

SELECT 
      count(product) as amount,
      product, 
      sum(price) AS price 
FROM `products` 
WHERE 
      brid = 'broker' 
AND 
      cancelled is null 
GROUP BY product 
WITH ROLLUP

これは私に与えます

amount     | product            | price

2          | PROD1              | 20
2          | PROD3              | 40
4          | NULL               | 60

PROD3 製品の 1 つがキャンセルされた列に日付があるため、結果は次のようになります。

1          | PROD3              | 20

「cancelled is null」を追加および削除しても、結果に違いはないようです。「cancelled = "0000-00-00 00:00:00"」も試しましたが、結果には影響しませんでした...

これをキャンセルされていない製品のみに制限する方法はありますか?

助けてください!

4

1 に答える 1

0

あなたは置くべきですAND cancelled IS NOT NULL

于 2012-09-21T10:32:24.637 に答える