#java #mysql #sql #netbeans
#java #mysql #sql #netbeans
Вопрос:
Как я могу заставить работать мой запрос?
Я хочу получить данные из моего SQL, где сегодняшняя дата не указана.
Вот мой запрос:
String sql = "select Room, Name, Age, EmailAddress, Phone, Nationality, CheckIn, CheckOut from customer where CURDATE() NOT IN (SELECT Room FROM customer WHERE CURDATE() between CheckIn and Checkout)";
Комментарии:
1. Это похоже на MySQL, поэтому я добавил соответствующие теги.
Ответ №1:
Это ваш запрос:
select c.*
from customer c
where CURDATE() NOT IN (SELECT c2.Room
FROM customer c2
WHERE CURDATE() between c2.CheckIn and c2.Checkout
);
Не зная вашей структуры данных или точно, что вы хотите, чтобы запрос выполнял, действительно трудно сказать, каким должен быть запрос.
Однако это была бы действительно, действительно, действительно необычная модель данных, в которой вызываемый столбец Room
был сопоставим с curdate()
. Я предполагаю, что это, по крайней мере, часть вашей проблемы.
Если вы хотите получить номера, которые не забронированы сегодня, начните с rooms
таблицы (я предполагаю, что она у вас есть!):
select r.*
from rooms r
where not exists (select 1
from bookings b -- a more natural name for a table with bookings
where curdate() between b.CheckIn and b.CheckOut
);
Ответ №2:
Почему бы просто не использовать NOT BETWEEN
:
SELECT Room, Name, Age, EmailAddress, Phone, Nationality, CheckIn, CheckOut
FROM customer
WHERE CURDATE() NOT BETWEEN CheckIn AND Checkout