2016-01-09 2 views
0

Я делаю систему бронирования отелей. На моей странице бронирования есть Jcalendar, чтобы выбрать дату и кнопку «Показать доступный номер». Когда выбрана дата и нажата кнопка, таблица должна отображать доступную комнату.SQLite Select с двумя условиями

Код для кнопки является

SELECT * FROM RoomInfo WHERE (
    number NOT IN (
     SELECT roomNo FROM Booked 
    ) AND "+reportDate+" NOT IN (
     SELECT date FROM Booked 
    ) 
) 

number является количество номеров в RoomInfo, который находится в BookedroomNo.

reportDate это текстовая строка отборных даты в формате ГГГГММДД и date в Booked также в формате ГГГГММДД.

В качестве примера

RoomInfo db 
------------- 
row number 

1  101 
2  201 
3  301 

Booked db 
----------- 
row roomNo date 
1  101  20160110 

Когда дата 20160110 выбрал и ожидаемый выход номер 201 и 301, но ничего не возвращается. Когда выбрана дата 20160111, ожидаемый выход - это номер 101, 201 и 301, но возвращается 201 и 301.

Что не так с моим запросом? Я новичок в SQLite, не стесняйтесь учить меня. Спасибо.

ответ

0

Ваш запрос неверен. В вашем запросе первое условие автоматически исключает все номера, поскольку вы выбираете все из таблицы Booked. Вы только хотите выбрать Booked номеров на указанную дату, чтобы перенести ограничение даты в первый suquery.

Попробуйте следующее:

"SELECT * FROM RoomInfo 
WHERE number NOT IN (
     SELECT roomNo FROM Booked WHERE date = "+reportDate+" 
    )"