2016-10-18 36 views
0

我需要檢查開始時間和結束時間,以確定可用於計劃的時間。但是,當我包含開始和結束時間列時,它會產生錯誤。來自子查詢的時間範圍的Mysql錯誤

SELECT horariosfixos 
FROM agendamento_horarios 
WHERE horariosfixos NOT IN(SELECT horaInicio,horaFim 
          FROM agendamento 
          WHERE data = '17-10-2016' 
          ORDER BY horaInicio ASC) 

Error: #1241 - Operand should contain 1 column(s)

回答

-1
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') 
+0

介意解釋downvote? –

0
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,至少在這種情況下。

這兩個列都可以通過進入議程的相同範圍獲得。