1
我的表MySQL - 如何在此代碼中插入BETWEEN ... AND?
CREATE TABLE `data` (
`record_id` int(20) NOT NULL auto_increment,
`id_fk` int(20) NOT NULL,
`plant_id_fk` int(20) NOT NULL,
`date` date NOT NULL,
`jsdate` varchar(20) character set latin1 collate latin1_general_ci NOT NULL,
`value_1` varchar(20) collate utf8_bin default NULL,
`category_1` varchar(200) character set latin1 collate latin1_general_ci default NULL,
PRIMARY KEY (`record_id`),
KEY `id_fk` (`id_fk`),
KEY `plant_id_fk` (`plant_id_fk`)
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
看起來像這樣
29 1 50 2010-05-20 2010, 4, 20 10 expenses
23 1 52 2010-12-13 2010, 11, 13 10 expenses
22 1 50 2011-01-10 2011, 0, 10 10 expenses
21 1 51 2011-02-07 2011, 1, 07 10 expenses
14 1 50 2011-03-31 2011, 2, 31 12 exercise
20 1 50 2011-04-01 2011, 3, 01 10 expenses
我使用這個SQL代碼來運行一個查詢
select up.id_fk, p.plant_name, up.plant_id_fk, ym2, ifnull(sum(data.value_1),0) totalvalue_1
from (select distinct date_format(date, '%Y-%m') ym, date_format(date, '%b %Y') ym2 from data where data.id_fk=1
cross join (select distinct data.id_fk, data.plant_id_fk from data where data.id_fk=1) up
inner join plants p on p.plant_id = up.plant_id_fk
left join data on date_format(data.date, '%Y-%m') = dates.ym
and up.id_fk=data.id_fk
and up.plant_id_fk=data.plant_id_fk
and category_1='expenses'
group by up.id_fk, up.plant_id_fk, ym2, ym
order by up.id_fk, up.plant_id_fk, date(concat(ym,'-1'))
我希望能夠過濾使用的結果日期範圍,例如
$dc = date("Y-m-d", strtotime("now"));
$df = date("Y-m-d", strtotime((date('Y')) . "-01-01"));
和MySQL的使用類似
WHERE data.date BETWEEN $dc AND $df
但還沒有找到在哪裏查詢插入此條款上面。
任何建議,以完成這項工作?任何指針都非常感謝。謝謝!
做了一些更改並作爲編輯提交給您的回覆 - 代碼現在完美運行 - 非常感謝! – pepe 2011-04-01 21:57:39