2つのSQL文で結果に差違が発生する
私の知識ではお手上げのため、ご教授願いたいのですが、
下記のようなテーブルが仮にあったとして、レコードがそれぞれいくつか入っています。
【itemsテーブル】
id・・・・・連番
cat_id・・・category.id
price ・・・価格
max_num ・・セット数
date・・・・発売日
【categioryテーブル】
id・・・・・連番
cat_name・・カテゴリ名
【orderテーブル】
id・・・・・連番
item_id ・・items.id
paid_price・支払価格
以下の2つのSQL文を実行させた場合、「total_price」の値に違いは発生しますか?
【SQL文 A】-----------------------------
SELECT
items.cat_id,
`category`.`cat_name`,
SUM(`items`.`price` * `items`.`max_num`) AS `total_price`,
SUM(IF(`order`.`paid_price` > 0, `order`.`paid_price`, 0)) AS `total_paid`,
SUM(IF(`order`.`paid_price` = 0 , `items`.`price`, 0)) AS `not_payment`
FROM `items`
INNER JOIN `category` ON (`items`.`cat_id` = `category`.`id`)
INNER JOIN `order` ON (`items`.`id` = `order`.`item_id`)
WHERE DATE_FORMAT(`items`.`date`, '%Y%m') = 201511
GROUP BY `items`.`cat_id`
ORDER BY `items`.`cat_id` ASC
------------------------------------
【SQL文 B】-----------------------------
SELECT
items.cat_id,
`category`.`cat_name`,
SUM(`items`.`price` * `items`.`max_num`) AS `total_price`
FROM `items`
INNER JOIN `category` ON (`items`.`cat_id` = `category`.`id`)
WHERE AND DATE_FORMAT(`items`.`date`, '%Y%m') = 201511
GROUP BY `items`.`cat_id`
ORDER BY `items`.`cat_id` ASC
------------------------------------
こちらで上記と同じようなSQL文を実行すると、Bで出てほしい値がAでは出てこないのです。
Aの場合は「WHERE DATE_FORMAT(`items`.`date`, '%Y%m') = 201511」が抽出条件として実行されていないような感じです。
すべてのレコードの「SUM(`items`.`price` * `items`.`max_num`) AS `total_price`」が計算されています。
Bだけで実行すればちゃんとほしい値が返ってきます。
何か間違っていますか?
補足
返答ありがとう御座います。 タグが違うのは承知してるのですが、商品の違いが知りたいのです。