Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > SELECT GROUP BY


Автор: In0stRAnez 17.4.2013, 18:11
Приветствую коллеги, прошу помощи, такая ситуация делаю запрос, в котором должен получить 2 темы для каждой темы я узнаю колличество прикрепленных картинок, из другой таблици, код работает на ура, все хорошо показывает но проблема в том что если картинка не закреплена за темой то тема не появится в выборке... 
т.е. задача стоит показать все темы которые есть и к ним присоеденить колличество картинок закрепленных за темой..

Код

SELECT `tems`.`name`,`tems`.`link`, COUNT(`textimage`.`textId`) FROM `tems`,`textimage` WHERE `textimage`.`textId` = `tems`.`id` GROUP BY `tems`.`name`


п.с. спасибо за помощь.

Автор: skyboy 17.4.2013, 18:36
с inner/left join знаком?
у тебя — неявный inner join, а нужен тебе left join.
разница между ними как раз в том, что происходит, если в присоединяемой таблице не находятся указанные условиями строки

Автор: In0stRAnez 17.4.2013, 21:10
можно немного код разяснить, ещё ни разу не работал с JOIN

Добавлено через 53 секунды
Код

SELECT * FROM `tems` LEFT JOIN COUNT(`textimage`.`textId`) ON `textimage`.`textId` = `tems`.`id`


выдает ошибку, что не правильно?

Автор: skyboy 17.4.2013, 21:26
не-не-не
JOIN — чтоб объединить таблицы в один результирующий набор. а ты зачем-то туда аггрегирующий COUNT засунул.
Код

SELECT `tems`.`name`,`tems`.`link`, COUNT(`textimage`.`textId`) 
FROM `tems`
LEFT JOIN `textimage` 
ON `textimage`.`textId` = `tems`.`id` 
GROUP BY `tems`.`name`


Автор: In0stRAnez 18.4.2013, 19:35
Спасибо, оно самое!, я уже голову испарил но был рядом с ответом...
буду глубже практиковаться с Join 

вот что я наработал

Код

SELECT `tems`.`name`, COUNT(`textimage`.`textId`) FROM `tems`,`textimage` WHERE `textimage`.`textId` = `tems`.`id` GROUP BY `tems`.`name`

только вместо 
 
Код

WHERE `textimage`.`textId` = `tems`.`id`

надо было вот это.
Код

LEFT JOIN `textimage` 
ON `textimage`.`textId` = `tems`.`id` 


В целом спасибо за помощь буду дальше разбираться.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)