Застрял с Where в Select'е

predator

web designer
Застрял с Where в Select'е

Я тут затормозил что-то:
Надо объединить 2 таблицы comments и userlist
в comments у меня комментарии к новостям (id, parent_id, user_id, user_name, datetime, text, ip)
в userlist инфо о зарегистрированных пользователях
в comments могут писать так-же и не зарегистрированные тогда в user_id у нас '0', а в имя хранится в user_name, в остальных случаях comments.user_id=userlist.id
Дык вот, надо выбрать те комменты которые принадлежат к данной новости (это по parent_id) + получить инфо из userlist, но надо учитывать когда user_id = 0 и тоже его выбирать если он из тех комментов которые к данной новости принадлежат. я написал следующий запрос:

PHP:
$result = db_query("SELECT c.*, u.* FROM comments AS c, userlist AS u
WHERE c.parent_id=$_GET[entry] AND (c.user_id=u.id OR c.user_id=0) ORDER BY c.id DESC");
LEFT JOIN'ом их не объединишь т.к. в comments комментарии ко всем новостям, значит надо что-то делать с WHERE. Но что?! Я уже голову переломал. Может кто чего присоветует?
 

ForJest

- свежая кровь
По идее должно работать

SELECT c.*, u.* FROM comments AS c LEFT JOIN userlist u ON c.user_id=u.id
WHERE c.parent_id=$_GET[entry] ORDER BY c.id DESC

Тогда для всех, у кого нет соответсвия user_id все u.* будут null.
 

chira

Новичок
как раз нужен LEFT JOIN:
SELECT c.*, u.* FROM comments AS c LEFT JOIN userlist AS u ON c.user_id=u.id AND c.parent_id='$_GET[entry]'
ORDER BY c.id DESC
 

predator

web designer
Cпасибо Всем!
ForJest: заработал правильно товой вариант :)
chira: с твоим запросом выдаются _все_ комменты - видимо из-за отсутствия условия WHERE.
Как доделаю сайт и вывешу его в нет, всех приглашу посмотреть ;)
 

chira

Новичок
Автор оригинала: predator
chira: с твоим запросом выдаются _все_ комменты - видимо из-за отсутствия условия WHERE.
комменты должны выводиться согласно условию:
AND c.parent_id='$_GET[entry]'
 

predator

web designer
Автор оригинала: chira
комменты должны выводиться согласно условию:
AND c.parent_id='$_GET[entry]'
я понимаю что должно работать, но я проверил (кстати сначала твой вариант) однако _правильно_ работает только вариант который ForJest предложил.
видимо нельзя смешивать условие объединения c.user_id=u.id с условием выборки c.parent_id='$_GET[entry]' ...
 
Сверху