2016-02-02 2 views
0

Я работаю над проектом, где я должен искать каждую свободную область в определенный момент, но я немного смущен тем, как это сделать.MySQL возвращает элементы со связанными таблицами

У меня есть 2 стола. Площадь и Бронирование.

Область имеет: идентификатор, имя

Бронирование имеет: идентификатор, area_id, дата_начала end_date

То, что я хочу, чтобы вернуть все районы, которые не имеют оговорки по конкретная дата. Любая идея, как это сделать?

+0

Вы хотите, чтобы проверить дату в '' start_date' и end_date'? –

+0

Есть ли у вас код? – Henrik

ответ

0

Запрос:

$date = '2016-2-2'; 
SELECT a.name 
FROM area AS a, 
    reservation AS r 
WHERE (r.start_date <> '$date' OR r.end_date <> '$date') 

Если предположить, что ваш формат даты в вашей базе данных Y-m-d.

+0

Это не сфера для работы. Когда нет каких-либо оговорок, он ничего не возвращает, в то время как он должен возвращать все. Когда только одна область имеет резервирование, она добавляет тот же самый start_date ко всем другим областям. –

+0

не получает то, что вы хотите сделать. –

+0

будет полезно, если вы добавите фиктивные данные с ожидаемым результатом. –

0

Попробуйте использовать этот запрос:

SELECT a.name 
FROM area AS a 
LEFT JOIN reservation AS r ON r.area_id = a.id 
AND :myDate between r.start_date AND r.end_date 
WHERE r.id IS NULL 
Смежные вопросы