好的家伙我的mySQL存在很大问题。我需要选择在特定时间内获取餐厅的免费餐桌。这是我的表格:
表格:
+-------------+ | id | chairs| +-------------+ | 1 | 3 | | 2 | 5 | | 4 | 10 | | 7 | 12 | | 10 | 6 | +-------------+
和预订:
+---------------------------------+ | id | table_id | start_datetime | +----------------|---------------------+ | 1 | 3 | 2013-11-27 16:15:00 | | 2 | 5 | 2013-11-27 19:00:00 | +----------------|---------------------+
我尝试这样的事情
SELECT *
FROM wp_reserveit_tables,wp_reserveit_reservations
WHERE (wp_reserveit_tables.chairs = wp_reserveit_reservations.table_id
AND wp_reserveit_reservations.start_datetime - INTERVAL 1 HOUR >= '2013-11-29 16:15:00'
AND wp_reserveit_reservations.start_datetime + INTERVAL 1 HOUR <= '2013-11-29 16:15:00')
OR wp_reserveit_tables.chairs <> wp_reserveit_reservations.table_id
但它给了我SQL错误。
所以,如果你有想法,请写下来。
由于
答案 0 :(得分:0)
只有在有预订的情况下,预订表才会有条目。所以我们可以简单地使用NOT IN
子句来做,
SELECT * FROM wp_reserveit_tables WHERE chairs_id NOT IN
(SELECT table_id FROM wp_reserveit_reservations GROUP BY table_id)
在您的查询中,您已使用带有table_id列的主席列加入了它们。所以我不确定哪一个匹配。因此,请根据您的要求更改Where子句中的列。
答案 1 :(得分:0)
您的查询中有列名start_datetime
,而您的表结构将其指定为starttime
。
除非您进一步指定,否则如果它不是拼写错误,则看起来确实有效。