Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Запрос с подсчётом - как написать? (Sly_G) 27/06/2005 - 23:52:00
      Re: RTFM - LEFT JOIN (Dinky) 28/06/2005 - 00:43:01

> Original message text:
> From: Sly_G - 27/06/2005 - 23:52:00
> Subject:Запрос с подсчётом - как написать?
> -----------------
> Имеются две следующие таблицы:
>
> CREATE TABLE `predmet` (
> `id` int(11) NOT NULL auto_increment,
> `name` varchar(16) NOT NULL default '',
> PRIMARY KEY (`id`)
> );
>
> INSERT INTO `predmet` VALUES (1, 'Первый');
> INSERT INTO `predmet` VALUES (2, 'Второй');
>
> CREATE TABLE `color` (
> `id` int(11) NOT NULL auto_increment,
> `predmet` int(11) NOT NULL default '0',
> `name` varchar(16) NOT NULL default '',
> PRIMARY KEY (`id`)
> );
>
> INSERT INTO `color` VALUES (1, 1, 'синий');
> INSERT INTO `color` VALUES (2, 1, 'красный');
>
> ---
>
> Смысл в том, что есть предметы, а есть цвета. Причём, не у каждого предмета есть цвет, а если есть, то цветов может быть несколько.
> В данном примере у предмета "Первый" 2 цвета, у предмета "Второй" ни одного.
>
> Мне нужно получить список вида:
>
> id предмета; имя предмета; кол-во цветов у предмета
>
> Если я пишу
> SELECT predmet.id,predmet.name,COUNT(color.id) FROM predmet,color WHERE color.predmet=predmet.id GROUP BY predmet.id
>
> то получаю только:
>
> id name COUNT(color.id)
> 1 Первый 2
>
> потому что у второго предмета нет цветов в таблице color, и не выполняется условие color.predmet=predmet.id
>
> Как правильно написать запрос, чтобы он выводил такое:
> id name COUNT(color.id)
> 1 Первый 2
> 2 Второй 0
>
> То есть, если цвета есть - тогда их кол-во, иначе - ноль.
>
> Я понимаю, можно каждому предмету назначить цвет, дефолтный, и считать кол-во цветов - 1, но в моей задаче это неудобно. Да и вообще интересно узнать ответ, в принципе.
>


From: Dinky - 28/06/2005 - 00:43:01
Subject:RTFM - LEFT JOIN
-----------------
subj ;)

--
Dmitry



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
22782



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |