私は発券システムに取り組んでおり、次のような一連のデータのレポートを生成したいと考えています。
- 初めてチケットが IU プールに割り当てられました。
- チケットが IU プールに最後に割り当てられた時刻。
- チケットが IU プールから他のプールに最後に割り当てられた時刻。
- 修復時間 (チケットがそのプールに最後に滞在した時間を示します)
- チケット番号。
これが私のテーブル構造です:
CREATE TABLE IF NOT EXISTS `aims_item_group_transfare` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`item_id` int(15) NOT NULL,
`user_id` int(5) NOT NULL,
`fromGroupId` int(3) NOT NULL,
`toGroupId` int(3) NOT NULL,
`transfareDate` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`status` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `fromGroupId` (`fromGroupId`),
KEY `toGroupId` (`toGroupId`),
KEY `transfareDate` (`transfareDate`),
KEY `item_id_ix` (`item_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
上の表には、異なるプール間の転送時間が格納されています。
これが私が書いたものです
SELECT FROM_UNIXTIME(MIN(TMIN.transfareDate)) AS 'First Time TO IU'
,FROM_UNIXTIME(MAX(TMAX.transfareDate)) AS 'Last Time TO IU', FROM_UNIXTIME(MAX(TMAXOut.transfareDate))'Last time from IU'
, A.item_id AS 'Ticket Number'
,
CONCAT(
TIMESTAMPDIFF(day,FROM_UNIXTIME(MAX(TMAX.transfareDate)),FROM_UNIXTIME(MAX(TMAXOut.transfareDate))) , ' Days ',
MOD( TIMESTAMPDIFF(hour,FROM_UNIXTIME(MAX(TMAX.transfareDate)),FROM_UNIXTIME(MAX(TMAXOut.transfareDate))), 24), ' Hours ',
MOD( TIMESTAMPDIFF(minute,FROM_UNIXTIME(MAX(TMAX.transfareDate)),FROM_UNIXTIME(MAX(TMAXOut.transfareDate))), 60), ' Minutes ',
MOD( TIMESTAMPDIFF(minute,FROM_UNIXTIME(MAX(TMAX.transfareDate)),FROM_UNIXTIME(MAX(TMAXOut.transfareDate))), 60), ' Seconds'
) AS 'Time to repair'
FROM aims_item_group_transfare T
LEFT JOIN aims_items A ON T.item_id = A.item_id
LEFT JOIN aims_item_group_transfare TMIN ON T.item_id = TMIN.item_id AND TMIN.toGroupId=20
LEFT JOIN aims_item_group_transfare TMAX ON T.item_id = TMAX.item_id AND TMAX.toGroupId=20
LEFT JOIN aims_item_group_transfare TMAXOut ON T.item_id = TMAXOut.item_id AND TMAXOut.fromGroupId=20
WHERE T.fromGroupId=20
AND T.transfareDate>=UNIX_TIMESTAMP('2013-06-05 00:00:00') AND T.transfareDate<=UNIX_TIMESTAMP('2013-06-12 23:59:59')
GROUP BY T.item_id
私のクエリはおそらく機能しません。正しくない null の日付が返されます。どんな体でも助けてくれることを願っています。