В вашем не равном объединении таблицы должны быть в том же порядке.Вместо этого:
c2.start<=gc.time AND gc.time<=c2.stop
... вам нужно это:
c2.start<=gc.time AND c2.stop>=gc.time
... или:
gc.time>=c2.start AND gc.time<=c2.stop
Вы также можете проверить, еслиМЕЖДУ работает:
gc.time BETWEEN c2.start AND c2.stop
МЕЖДУ включительно с обеих сторон, поэтому я думаю, что это в точности соответствует вашим исходным критериям.объединение с тремя условиями, одно из которых применяется к одной паре таблиц, а два других - к другой паре таблиц.Ваше первое условие, p.id = c2.parent_id, соединяет c2 с p, а ваша вторая пара неэквивалентных условий соединяет c2 и gc.Подобные объединения довольно сложны.
Я бы предложил использовать Access QBE для определения ваших объединений как равных объединений, а затем настроить SQL для объединения, чтобы сделать его не равным объединению.
В качестве альтернативы может быть проще применить критерии даты / времени в предложении WHERE, т. Е. Как неявное соединение.