mysql:10435
From: "konet218@xxxxxxxxxx" <"konet218@xxxxxxxxxx" <konet218@xxxxxxxxxx>>
Date: Tue, 16 Nov 2004 07:15:04 +0900
Subject: [mysql 10435] IF()を使ったSELECT文について
近藤です。
ちょっと途方にくれてしまいました。
おそらく意図したSQL文に間違いはないと思っているのですが、
IF()が思う様に言う事を聞いてくれません。
[環境]
MySQL4.0.20
[テーブル構造]
CREATE TABLE `acc_tbl` (
`acc_media_code` varchar(5) binary NOT NULL default '',
`acc_store_id` bigint(20) unsigned NOT NULL default '0',
`acc_career` enum('i','v','e') NOT NULL default 'i',
`acc_date` date NOT NULL default '0000-00-00',
`acc_time` tinyint(2) unsigned NOT NULL default '0',
`acc_num` bigint(20) unsigned NOT NULL default '0'
) TYPE=MyISAM;
[データ]
INSERT INTO `acc_tbl` VALUES ('zzz', 0, 'e', '2004-11-01', 6, 2);
INSERT INTO `acc_tbl` VALUES ('zzz', 0, 'i', '2004-11-01', 8, 1);
INSERT INTO `acc_tbl` VALUES ('zzz', 0, 'i', '2004-11-01', 9, 1);
INSERT INTO `acc_tbl` VALUES ('zzz', 0, 'v', '2004-11-06', 21, 1);
INSERT INTO `acc_tbl` VALUES ('zzz', 0, 'i', '2004-11-06', 22, 15);
INSERT INTO `acc_tbl` VALUES ('zzz', 0, 'i', '2004-11-06', 23, 2);
INSERT INTO `acc_tbl` VALUES ('zzz', 0, 'v', '2004-11-07', 0, 1);
INSERT INTO `acc_tbl` VALUES ('zzz', 0, 'e', '2004-11-07', 10, 1);
INSERT INTO `acc_tbl` VALUES ('zzz', 0, 'i', '2004-11-07', 11, 2);
[SQL]
SELECT
IF(`acc_date`='2004-11-07',SUM(`acc_num`),0) AS TODAY,
IF(`acc_date`='2004-11-07' && `acc_career`='i',SUM(`acc_num`),0) AS TODAY_I,
IF(`acc_date`='2004-11-07' && `acc_career`='v',SUM(`acc_num`),0) AS TODAY_V,
IF(`acc_date`='2004-11-07' && `acc_career`='e',SUM(`acc_num`),0) AS TODAY_E,
IF(`acc_date`='2004-11-06',SUM(`acc_num`),0) AS YESTERDAY,
IF(`acc_date`<>'2004-11-07' && `acc_date`<>'2004-11-06',SUM(`acc_num`),0) AS TOTAL
FROM `acc_tbl`;
[実行結果]
+---------------------------------------------------------+
| TODAY | TODAY_I | TODAY_V | TODAY_E | YESTERDAY | TOTAL |
+-------+---------+---------+---------+-----------+-------+
| 0 | 0 | 0 | 0 | 0 | 26 |
+-------+---------+---------+---------+-----------+-------+
[期待する結果]
+---------------------------------------------------------+
| TODAY | TODAY_I | TODAY_V | TODAY_E | YESTERDAY | TOTAL |
+-------+---------+---------+---------+-----------+-------+
| 4 | 2 | 1 | 1 | 18 | 4 |
+-------+---------+---------+---------+-----------+-------+
何がおかしいのでしょうか?
-> 10435 2004-11-16 07:15 ["konet218@xxxxxxxxxx] IF()を使ったSELECT文について 10437 2004-11-16 09:15 ┗["A.K.I." <aki@xxxxxx] 10440 2004-11-16 09:32 ┗["konet218@xxxxxxxxxx]