1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
CREATE TEMPORARY TABLE tmpMax
SELECT event.VEHICLE_ID, event.event_TYPE_ID, MAX(event.CREATED_AT) AS Date_last_event
FROM event
WHERE event.CREATED_AT BETWEEN '2010-01-24 05:00:00' AND '2010-01-25 04:59:00'
GROUP BY event.VEHICLE_ID, event.event_TYPE_ID;
CREATE TEMPORARY TABLE tmpMin
SELECT event.VEHICLE_ID, event.event_TYPE_ID, MIN(event.CREATED_AT) AS Date_first_event
FROM event
WHERE event.CREATED_AT BETWEEN '2010-01-24 05:00:00' AND '2010-01-25 04:59:00'
GROUP BY event.VEHICLE_ID, event.event_TYPE_ID;
ALTER TABLE tmpMax
ADD INDEX(VEHICLE_ID, event_TYPE_ID);
ALTER TABLE tmpMin
ADD INDEX(VEHICLE_ID, event_TYPE_ID);
(
SELECT event.ID, event.VEHICLE_ID, event.DRIVER_ID, event.event_TYPE_ID, event.CREATED_AT, event.MESSAGE, event.RECEIVED, event.LONGITUDE, event.QUADRANT_LONG, event.LATITUDE, event.QUADRANT_LAT, event.HEADING, event.SPEED, event.LOCATION_NAME, event.VALIDITY
FROM event
INNER JOIN tmpMax ON event.VEHICLE_ID = tmpMax.VEHICLE_ID
AND event.event_TYPE_ID = tmpMax.event_TYPE_ID
WHERE event.CREATED_AT = tmpMax.Date_last_event
AND event.event_type_id = 3
)
UNION
(
SELECT event.ID, event.VEHICLE_ID, event.DRIVER_ID, event.event_TYPE_ID, event.CREATED_AT, event.MESSAGE, event.RECEIVED, event.LONGITUDE, event.QUADRANT_LONG, event.LATITUDE, event.QUADRANT_LAT, event.HEADING, event.SPEED, event.LOCATION_NAME, event.VALIDITY
FROM event
INNER JOIN tmpMin ON event.VEHICLE_ID = tmpMin.VEHICLE_ID
AND event.event_TYPE_ID = tmpMin.event_TYPE_ID
WHERE event.CREATED_AT = tmpMin.Date_first_event
AND event.event_type_id = 2
)
ORDER BY VEHICLE_ID, event_type_id
DROP TABLE tmpMax;
DROP TABLE tmpMin; |
Partager