Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MySQL]Задача на выборку. 
V
    Опции темы
Хоббит
Дата 14.7.2008, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

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



Такая таблица с данными.

A  B  C
1  1  1
1  1  2
1  1  3
1  2  4
1  2  5
2  3  6
2  3  7
2  4  8
2  4  9
2  5  10
2  5  11

И.т.д. Необходимо получить количество уникальных B для каждого A
То есть
A  Count(B)
1  2
2  3

Как сделать?

SELECT A, COUTN(B) WHERE TRUE GROUP BY A 
Возращает разумеется
A  Count(B)
1  5
2  6
PM MAIL   Вверх
skyboy
Дата 14.7.2008, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



использовать директиву DISTINCT
PM MAIL   Вверх
Akina
Дата 14.7.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Код

Group By A, B



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Хоббит
Дата 14.7.2008, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

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



GROUP BY A,B в данном случае вернет

A  COUNT(B)
1  3
1  2
2  2
2  2
2  2
PM MAIL   Вверх
skyboy
Дата 14.7.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Akina, нет. не получится.
на приведенных данных будет:
А     В    Count(*)
1     1         3
1     2         2
2     3         2
2     4         2
2     5         2
т.е. для получения нужного автором 
A  Count(B)
1  2
2  3
надо ещё поверх твоего варианта запроса сделать группировку по А:
Код

SELECT `sub`.`A`, count(`sub`.`B`)
FROM (
SELECT `A`, `B`, count(*) as `C`
FROM `table`
GROUP BY `A`,`B`
) as `sub`
GROUP BY `A`

а надо-то всего лишь distinct в нужное место воткнуть...

Добавлено через 55 секунд
Цитата(skyboy @  14.7.2008,  16:55 Найти цитируемый пост)
а надо-то всего лишь distinct в нужное место воткнуть... 

в том смысле, что для получения требуемого вполне можно без вложенных запросов обойтись ;)

Добавлено через 1 минуту и 25 секунд
Хоббит, что, с distinct'ом не разобрался разве? smile 
PM MAIL   Вверх
Хоббит
Дата 14.7.2008, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1263
Регистрация: 6.11.2005

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



О созрел

SELECT A, COUTN(DISTINCT B) WHERE TRUE GROUP BY A 

До этого пытался сделать
SELECT DISTINCT A, COUTN(B) WHERE TRUE GROUP BY A

Добавлено через 1 минуту и 37 секунд
Одновременно написали. smile
PM MAIL   Вверх
skyboy
Дата 14.7.2008, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Хоббит @  14.7.2008,  17:01 Найти цитируемый пост)
WHERE TRUE

пример индусского кода?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




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


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

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