Задавайте вопросы, мы ответим
Вы не зашли.
Ребята, привет всем! Помогите пожалуйста разобраться в работе JOIN.
Имеются две таблицы:
Отредактированно FiMko (21.05.2011 00:58:16)
Неактивен
Как-то вот так вот работает:
Неактивен
Хмм, с LEFT JOIN все работает:
Неактивен
JOIN требует наличия соответствующих строк в присоединяемых таблицах.
Если строк нет, то и выборка оказывается пустой.
Неактивен
paulus написал:
JOIN требует наличия соответствующих строк в присоединяемых таблицах.
Если строк нет, то и выборка оказывается пустой.
Это правда, но...
Пусть два JOIN'а и не дали результата и результирующая их выборка оказалась пустой, почему при этом другая подчасть первого запроса, выделенная красным не сработала, ведь именно она же дает не пустой результат если ее изолировать от JOIN'ов (второй запрос)?
Отредактированно FiMko (21.05.2011 21:04:53)
Неактивен
Пусть у Вас есть две библиотеки. В случае без JOIN запрос звучит так:
«найди мне книги, которые есть в первой библиотеке, у которых автор
Марк Твен». Запрос с JOIN звучит так: «найди мне книги, которые есть
в обеих библиотеках, у которых автор Марк Твен или написано слово
″Твен″ в названии». Даже если будет много «или» — при пустой второй
библиотеке счастья не будет
Неактивен
paulus написал:
Запрос с JOIN звучит так: «найди мне книги, которые есть
в обеих библиотеках, у которых автор Марк Твен или написано слово
″Твен″ в названии».
paulus, cпасибо за помощь (всегда выручаете)! Почему-то для этого случая я ошибочно в голове представлял, что JOIN объединяет (как для union) выборки и поэтому отсутствие в одной из выборок результата не должно повлечь исключения рядом стоящего другого непустого результата. Теперь стало понятно почему LEFT JOIN помог.
Отредактированно FiMko (21.05.2011 23:40:51)
Неактивен