Как их обьединить?

Статус
В этой теме нельзя размещать новые ответы.

Denis5

Постоялец
Регистрация
2 Сен 2008
Сообщения
98
Реакции
23
Подскажите как взять игры из таблицы1 и присоединить кол-во комментариев к ним из таблицы2 (MYSQL)
Таблица с играми (games)
GID name
1 aaa
2 bbb
3 ccc
С комментариями к ним ( gcomments)
GID comment
1 bla
1 blabla
2 blablabla

Мне нужно получить
GID name total
1 aaa 2
2 bbb 1
3 ccc 0

total - кол-во комментариев

select * from games left join
(select GID, count(*) as total from gcomments GROUP BY GID as t1) on games.GID = t1.GID
- это мой вариант, ессно он не работает:mad:
 
что то вроде этого
Код:
SELECT games.GID, games.name, count(*) FROM gcomments, games WHERE gcomments.GID=games.GID GROUP BY gcomments.GID
 
Только одна проблема, он выводит только игры, где комментариев больше 0, а мне нужно что бы если нет комментариев - выводил их с 0
 
тогда так
Код:
SELECT games.GID, games.name, count(gcomments.GID) FROM games LEFT JOIN gcomments  ON games.GID=gcomments.GID GROUP BY gcomments.GID
 
Не, не получается, группирует все игры с 0 комментариями как 1 игру.

А у меня их больше тысячи.
 
3ья итерация ;)
Код:
SELECT games.GID, games.name, count(gcomments.GID) FROM post LEFT JOIN gcomments  ON games.GID=gcomments.GID
GROUP BY games.GID
 
помню тоже долго мучался с COUNT(*) и возвратом 0.
Потом в доках нашел
COUNT(*) is somewhat different (прим. от COUNT(exp)) in that it returns a count of the number of rows retrieved, whether or not they contain NULL values.
Я так понял что 1 это из-за LEFT JOIN, который поставляет Null строку.
 
Я так понял что 1 это из-за LEFT JOIN, который поставляет Null строку.
да , в отличии от CROSS JOIN (аналог того как у меня в первом варианте)
тогда NULL строки просто отбрасывались.
 
3й вариант ok :yahoo:
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху