GeT
Новичок
Запрос для вывода новостей.
Есть 3 таблицы:
news - тут хранится текст новости, id автора и т.д.
users - тут для каждому id соответствует username
comments - тут содержится текст комментов, id автора и тип комментария (там коменты для статей, новостей и т.п.)
Для вывода новости я составляю такой запрос:
[SQL]
SELECT t1.id, t1.title, t1.date, t1.time, t1.image, t1.body, t1.authorid, t3.username author, COUNT( t2.id ) noc FROM news t1
LEFT JOIN comments t2 ON t2.cid = t1.id
LEFT JOIN users t3 ON t3.id=t1.authorid
WHERE t2.cat='news' AND t1.id=39
GROUP BY t2.cid,t2.cat
[/SQL]
В этому случае, если у новости нет комментариев, она не выведется.
Пробовал такой вариант:
[SQL]
SELECT t1.id, t1.title, t1.date, t1.time, t1.image, t1.body, t1.authorid, t3.username author, COUNT( t2.id ) noc FROM news t1
LEFT JOIN comments t2 ON t2.cid = t1.id
LEFT JOIN users t3 ON t3.id=t1.authorid
WHERE IF(noc,t2.cat='news',1) AND t1.id=39
GROUP BY t2.cid,t2.cat
[/SQL]
Но он не работает.
[SQL]
SELECT t1.id, t1.title, t1.date, t1.time, t1.image, t1.body, t1.authorid, t3.username author, COUNT( t2.id ) noc FROM news t1
LEFT JOIN comments t2 ON t2.cid = t1.id
LEFT JOIN users t3 ON t3.id=t1.authorid
WHERE (t2.cat='news' OR 1) AND t1.id=39
GROUP BY t2.cid,t2.cat
[/SQL]
Вот этот работает, НО, тут выводится 2 раза новость (потому что существуют комментарии типа "news" и комментарии типа "article"
-~{}~ 12.03.05 15:49:
P.S. не советуйте, плиз, всякие мануалы типа http://dev.mysql.com/doc
http://phpfaq.ru
http://detail.phpclub.net/article/2000-12-05
Я их все читал. Думаю, просто ошибся где-то
-~{}~ 12.03.05 17:13:
И еще, вариант разделения таблицы комменты на несколько таблиц мне не подходит тоже, т.к. структура динамическая и могут быть добавлены новые типы комментариев.
Есть 3 таблицы:
news - тут хранится текст новости, id автора и т.д.
users - тут для каждому id соответствует username
comments - тут содержится текст комментов, id автора и тип комментария (там коменты для статей, новостей и т.п.)
Для вывода новости я составляю такой запрос:
[SQL]
SELECT t1.id, t1.title, t1.date, t1.time, t1.image, t1.body, t1.authorid, t3.username author, COUNT( t2.id ) noc FROM news t1
LEFT JOIN comments t2 ON t2.cid = t1.id
LEFT JOIN users t3 ON t3.id=t1.authorid
WHERE t2.cat='news' AND t1.id=39
GROUP BY t2.cid,t2.cat
[/SQL]
В этому случае, если у новости нет комментариев, она не выведется.
Пробовал такой вариант:
[SQL]
SELECT t1.id, t1.title, t1.date, t1.time, t1.image, t1.body, t1.authorid, t3.username author, COUNT( t2.id ) noc FROM news t1
LEFT JOIN comments t2 ON t2.cid = t1.id
LEFT JOIN users t3 ON t3.id=t1.authorid
WHERE IF(noc,t2.cat='news',1) AND t1.id=39
GROUP BY t2.cid,t2.cat
[/SQL]
Но он не работает.
[SQL]
SELECT t1.id, t1.title, t1.date, t1.time, t1.image, t1.body, t1.authorid, t3.username author, COUNT( t2.id ) noc FROM news t1
LEFT JOIN comments t2 ON t2.cid = t1.id
LEFT JOIN users t3 ON t3.id=t1.authorid
WHERE (t2.cat='news' OR 1) AND t1.id=39
GROUP BY t2.cid,t2.cat
[/SQL]
Вот этот работает, НО, тут выводится 2 раза новость (потому что существуют комментарии типа "news" и комментарии типа "article"
-~{}~ 12.03.05 15:49:
P.S. не советуйте, плиз, всякие мануалы типа http://dev.mysql.com/doc
http://phpfaq.ru
http://detail.phpclub.net/article/2000-12-05
Я их все читал. Думаю, просто ошибся где-то
-~{}~ 12.03.05 17:13:
И еще, вариант разделения таблицы комменты на несколько таблиц мне не подходит тоже, т.к. структура динамическая и могут быть добавлены новые типы комментариев.