LEFT JOIN не умеет возвращать NULL? Или как лучше обьеденить таблицы.

running-frag

Новичок
LEFT JOIN не умеет возвращать NULL? Или как лучше обьеденить таблицы.

Собсно..

Есть две таблицы.
table_1 (categoryID, categoryName, published) данные типа (int, varchar, int).
table_2 (userID, categoryID) данные типа (int, int)

Теперь.
В table_1 полный список наименований (пусть будет) 10.
В table_2 часть их. Т.е. от 0 до 10. (динамическая таблица)

Что имеем. Если же вот так:
PHP:
SELECT 
tab_cat.categoryID, 
tab_check.categoryID as catShow
FROM table_1 as tab_cat

LEFT JOIN table_2 as tab_check
ON tab_cat.categoryID = tab_check.categoryID

WHERE tab_cat.published = '1'
Имеем задуманное. Что именно - две колонки. Первая это полный список (10). А во второй колонке, те значения которых нет в table_2 имеют NULL. Т.е. :
----------------------------
categoryID || catShow
----------------------------
1 || 1
2 || NULL
3 || 3
4 || NULL
...................................
----------------------------
Как бы всё красиво, то что я и хотел.

Теперь же когда пытаюсь добавить
PHP:
....
WHERE tab_cat.published = '1' AND tab_check.userID = '$user_id'
мне затирает те строки где tab_check.categoryID = NULL.

----------------------------
categoryID || catShow
----------------------------
1 || 1
3 || 3
...................................
----------------------------

Как быть? Мне нужно всего лишь добавить проверку на $user_id но при этом что бы NULL были с table_2.
Обьединение в одну таблицу исключено. Можно конечно и двумя запросали через цыкл выбирать. Но вот хочется узнать как лучше через один, так по коду проще.
 

running-frag

Новичок
Шикарно. СПС. :) Во блин.. А я и не знал. XD


PS: Нужно чаще в манки заглядывать.. Сори за такой вопрос. :)
 
Сверху