0

我使用以下 SQL 查询,但我不断收到错误

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '' 附近使用的正确语法

SELECT roomID 
FROM rooms 
WHERE
 roomID NOT IN (
   SELECT t1.roomID 
   FROM
    rooms t1 
    INNER JOIN reservations t2 ON t1.roomID = t2.roomID 
    INNER JOIN reservationdetails t3 ON t2.resDeID = t3.resDeID 
   WHERE NOT ('2013-01-13' < t3.arrival OR ('2013-02-03' > t3.departure)
  )

我不是一个很好的 SQL 程序员.. 在阅读了很多关于 SQL 的内容后做了所有这些..

如果有人能找出这里出了什么问题,那将是一个很大的帮助..

提前致谢..

4

4 回答 4

2

看起来,至少,你失踪了)

于 2013-01-05T22:53:31.407 回答
1

你错过了一个结束)

改变

WHERE NOT ('2013-01-13' < t3.arrival OR ('2013-02-03' > t3.departure)

WHERE NOT ('2013-01-13' < t3.arrival OR ('2013-02-03' > t3.departure))
于 2013-01-05T22:53:04.837 回答
0

你应该总是关闭所有打开的括号,好像你错过了一个。

SELECT roomID 
FROM rooms 
WHERE
 roomID NOT IN (
   SELECT t1.roomID 
   FROM
    rooms t1 
    INNER JOIN reservations t2 ON t1.roomID = t2.roomID 
    INNER JOIN reservationdetails t3 ON t2.resDeID = t3.resDeID 
   **WHERE NOT ('2013-01-13' < t3.arrival OR ('2013-02-03' > t3.departure)**
  )

您可以删除 not 和 or 之间的括号,如下所示

 WHERE t3.arrival >= '2013-01-13'   OR t3.departure <= '2013-02-03'

或者再添加一个括号..

 WHERE NOT ('2013-01-13' < t3.arrival OR ('2013-02-03' > t3.departure))
于 2013-01-06T00:46:54.813 回答
0

你的问题在这里

 WHERE NOT ('2013-01-13' < t3.arrival OR ('2013-02-03' > t3.departure)

尝试这样做

 WHERE t3.arrival >= '2013-01-13'   OR t3.departure <= '2013-02-03' 
于 2013-01-05T22:54:03.667 回答