2015-09-02 5 views
0

Я искал поиск, но не смог найти ответ. Мне нужно увидеть записи в homes_houses, если в homes_availability нет соответствующих записей. Я знаю, что это имеет какое-то отношение к IS NULL, но все, что я пробовал, не удалось. Пожалуйста, помогите.Результаты mysql, если в таблице соединений нет записей

SELECT 
    houses_houses.*, 
    houses_availability.from_date 
FROM 
    houses_houses 
LEFT JOIN 
    houses_availability ON houses_houses.sid=houses_availability.housesid 
WHERE 
    houses_availability.from_date>='2015-09-05' 
AND 
    houses_availability.until_date<'2015-09-11' 
ORDER BY houses_houses.sid LIMIT 0, 9 
+0

Малого пункт, вы выбираете houses_availability.from_date, но вы, кажется, хотите только введите строки, в которых нет строки homes_availability. Следовательно, поля всегда будут NULL для любых возвращенных строк. – Kickstart

ответ

0

Вы проверить NULL на LEFT OUTER присоединенных таблиц в предложении WHERE: -

SELECT 
    houses_houses.*, 
    houses_availability.from_date 
FROM houses_houses 
LEFT JOIN houses_availability 
ON houses_houses.sid=houses_availability.housesid 
AND houses_availability.from_date>='2015-09-05' 
AND houses_availability.until_date<'2015-09-11' 
WHERE houses_availability.housesid IS NULL 
ORDER BY houses_houses.sid LIMIT 0, 9 

Важно отметить, что вы не должны проверить любой из колонок от LEFT OUTER присоединяемой таблицы в WHERE, поскольку это исключает целую строку ПОСЛЕ присоединения, а не исключает строку LEFT OUTER JOINed tables перед соединением. Таким образом, проверьте диапазон дат в предложении ON

+0

Большое спасибо Kickstart. – user2369818

0

Вы должны включить ваши критерии houses_availability в РЕГИСТРИРУЙТЕСЬ .. ON статьи:

SELECT houses_houses.*, houses_availability.from_date 
FROM houses_houses 
LEFT JOIN houses_availability ON (houses_houses.sid=houses_availability.housesid AND houses_availability.from_date>='2015-09-05' 
    AND houses_availability.until_date<'2015-09-11') 
WHERE 
    houses_availability.housesid is null 
ORDER BY houses_houses.sid LIMIT 0, 9