в мое приложение НМА имеют назначения, что пользователи заказов, и таблица выглядит следующим образом:MySQL обратный TimeDiff между рядами в одной таблице
id simTypeID simID simDateTime startHour endHour
1 100 1 2016-09-01 09:00:00 09:00:00 10:00:00
2 100 2 2016-09-01 10:00:00 10:00:00 11:00:00
3 100 3 2016-09-01 11:00:00 11:00:00 12:00:00
4 100 1 2016-10-11 10:00:00 10:00:00 11:00:00
* Примечание: время пуска 9:00 утра каждый день
теперь я хочу, чтобы все свободное время в конкретной даты (например, 2016-09-01) по simID
это означает, что результат должен быть в tbl_free_time:
simID startFreeHour endFreeHour
1 10:00:00 23:59:00
2 09:00:00 09:59:00
2 11:00:00 23:59:00
3 09:00:00 10:59:00
3 12:00:00 23:59:00
Как я могу использовать TIMEDIFF в одной таблице? (нужно взять endHour первой строки и startHour второй строки).
любой другой способ решить эту проблему будет оценен!
я думал, чтобы создать временный TBL с:
CREATE TABLE tbl_sim_temp LIKE tbl_sim
INSERT tbl_sim_temp
SELECT * FROM tbl_sim
WHERE simDateTime BETWEEN '2016-09-01 00:00:00' AND '2016-09-01 23:59:59'
ORDER BY id ASC
и чем использовать LEFT JOIN, что-то вроде что-
SELECT TIMEDIFF(a.startHour,b.endHour)
FROM a tbl_sim
LEFT JOIN b tbl_sim_temp
WHERE a.simID = b.simID AND a.simTypeid = b.simtypeid AND a.id = b.id+1
, но я застрял
благодарим за решение! – ic205
Я не понимаю, вы можете иметь в тот же день две строки с тем же simId? –
есть. каждый simID работает с 09:00 до 23:59 - так что у меня может быть много строк с одним и тем же simID в каждый день. но ваше решение отлично работает – ic205