Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SELECT GROUP BY 
V
    Опции темы
In0stRAnez
  Дата 17.4.2013, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



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

Код

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


п.с. спасибо за помощь.
PM MAIL   Вверх
skyboy
Дата 17.4.2013, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



с inner/left join знаком?
у тебя — неявный inner join, а нужен тебе left join.
разница между ними как раз в том, что происходит, если в присоединяемой таблице не находятся указанные условиями строки
PM MAIL   Вверх
In0stRAnez
Дата 17.4.2013, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



можно немного код разяснить, ещё ни разу не работал с JOIN

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

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


выдает ошибку, что не правильно?
PM MAIL   Вверх
skyboy
Дата 17.4.2013, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



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

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


PM MAIL   Вверх
In0stRAnez
Дата 18.4.2013, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 30.3.2008

Репутация: нет
Всего: нет



Спасибо, оно самое!, я уже голову испарил но был рядом с ответом...
буду глубже практиковаться с 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` 


В целом спасибо за помощь буду дальше разбираться.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.