2009-12-15 2 views
0

У меня есть две таблицы (релизы и форматы) и поле, которое связано с ними обоими - bar_code. Проблема, которую я имею с этим отборным заявлением:MySQL: объединение таблицы в поле, которое может быть NULL

SELECT 
    Release.name, 
    Release.default_upc, 
    Artist.name, 
    Artist.url_name, 
    Format.* 
FROM 
    releases AS Release, 
    artists AS Artist, 
    formats AS Format 
WHERE 
    Release.id IN(20015, 2414) AND 
    Artist.id = Release.artist_id AND 
    Format.bar_code = Release.default_upc 

Проблемы в том, что когда Release.default_upc = null, запись не будет возвращена. Тем не менее, это допустимое поведение: default_upc может быть нулевым, и если это запрос, то не попытка поиска формата с Format.bar_code = null - вместо этого просто возвращает другие выбранные данные.

Не уверен, что это на 100% возможно в MySQL, но доступно для любых советов.

ответ

1

Используйте внешнее соединение ... вот быстрый выстрел. Проверьте другие ссылки для объяснения.

select Release.name, 
     Release.default_upc, 
     Artist.name, 
     Artist.url_name, 
     Format.* 
from releases as Release 
inner join artists as Artist 
    on Artist.id = Release.artist_id 
outer join formats as Format 
    on Format.bar_code = Release.default_upc 
where 
    Release.id in (20015, 2414) 
Смежные вопросы