Mysql ошибка с диапазоном времени из подзапроса
Мне нужно проверить время начала и окончания, чтобы было время для планирования. Но выдает ошибку, когда я включаю столбцы времени начала и окончания.
SELECT horariosfixos
FROM agendamento_horarios
WHERE horariosfixos NOT IN(SELECT horaInicio,horaFim
FROM agendamento
WHERE data = '17-10-2016'
ORDER BY horaInicio ASC)
Ошибка: #1241 - операнд должен содержать 1 столбец
2 ответа
Решение
SELECT horariosfixos
FROM agendamento_horarios
WHERE horariosfixos NOT IN(SELECT horaInicio
FROM agendamento
WHERE data = '17-10-2016'
UNION
SELECT horaFim as horaInicio
FROM agendamento
WHERE data = '17-10-2016')
SELECT ah.horariosfixos
FROM agendamento_horarios AS ah
LEFT JOIN agendamento AS a ON a.data = '17-10-2016'
AND ( ah.horariosfixos = a.horaInicio
OR ah.horariosfixos = a.horaFim
)
WHERE a.id IS NULL
ORDER BY ah.horaInicio ASC
LEFT JOIN ... IS NULL
это лучший способ сказать NOT IN
По крайней мере, в этом случае.
Обе колонки могут быть получены одним и тем же охватом повестки дня.