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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос: к-во разных записей, DISTINCT + COUNT, а может и нет 
V
    Опции темы
WIPS
Дата 23.8.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

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



Задача: есть таблица такой структуры:
Код

+---------------+
|  some_field   |
+---------------+
|  value_1      |
|  value_1      |
|  value_1      |
|  value_3      |
|  value_2      |
|  value_1      |
|  value_3      |
|  value_2      |
|  value_3      |
+---------------+

Мне надо посчитать количество всех разных записей, т.е. результатом должно быть что-то вроде:
Код

value_1 => 4
value_2 => 2
value_3 => 3

Можно это сделать одним запросом? Если да, то каким? Сам кручу DISTINCT и COUNT, но что-то ничего не выходит smile
Заранее спасибо за любую помощь...
--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
Secandr
Дата 23.8.2006, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



Код

SELECT COUNT('some_field') FROM `tttt` GROUP BY `some_field`



--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
igorold
Дата 23.8.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

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



а чтобы видно было какое значение сколько раз встречается, то лучше так:
Код

SELECT some_field, COUNT(some_field) FROM tttt GROUP BY some_field;



--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
igorold
Дата 23.8.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

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



а еще лучше :
Код

SELECT some_field, COUNT(*) FROM tttt GROUP BY some_field;

вот пример:
Код

mysql> SELECT Povodyr, COUNT(Povodyr) FROM Problems GROUP BY Povodyr;
+---------+----------------+
| Povodyr | COUNT(Povodyr) |
+---------+----------------+
|    NULL |              0 |
|       0 |             77 |
|       2 |              5 |
|      27 |              1 |

и второй:
Код

mysql> SELECT Povodyr, COUNT(*) FROM Problems GROUP BY Povodyr;
+---------+----------+
| Povodyr | COUNT(*) |
+---------+----------+
|    NULL |        2 |
|       0 |       77 |
|       2 |        5 |
|      27 |        1 |

посмотри и увидишь отличия ...  smile 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
WIPS
Дата 23.8.2006, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

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



Secandr, спасибо, работает.


igorold, ваще спасибо! Именно то, что надо. Правда разницы между твоими примерами на моей БД я не заметил smile Расскажешь?
--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
Secandr
Дата 23.8.2006, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



WIPS, ну явно же у тебя не одна ячейка в таблице? Что у тебя ключом является?


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
WIPS
Дата 23.8.2006, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

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



Цитата(Secandr @  23.8.2006,  15:56 Найти цитируемый пост)
ну явно же у тебя не одна ячейка в таблице?
Ну ессесьно не одна, это же так для примера. 
Цитата(Secandr @  23.8.2006,  15:56 Найти цитируемый пост)
Что у тебя ключом является?
Я не оч. разбираюсь в MySQL, но PRIMARY клоч у меня - поле id (как ни странно smile). Ты это хотел узнать? А зачем?
Предположим таблица выглядит так:
Код

+---------------+-------+
|  some_field   |  id   |
+---------------+-------+
|  value_1      |   1   |
 . . . . . . . . . . . .
|  value_3      |   n   |
+---------------+-------+



--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
Secandr
Дата 23.8.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

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



Я делаю так:
Код

SELECT `some_field`, count(`id`) FROM `table` GROUP BY `some_field`


Это сообщение отредактировал(а) Secandr - 23.8.2006, 22:36


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
igorold
Дата 24.8.2006, 06:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

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



Цитата(WIPS @  23.8.2006,  16:16 Найти цитируемый пост)
Правда разницы между твоими примерами на моей БД я не заметил smile Расскажешь? 

а ты обрати внимание в моем примере на строчку со значеним NULL ... по разному считается ...  smile 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
WIPS
Дата 27.8.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

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



Цитата(igorold @  24.8.2006,  05:09 Найти цитируемый пост)
а ты обрати внимание в моем примере на строчку со значеним NULL

В твоем примере - да. Но у меня в обоих случаях посчитало к-во NULL-ов  smile 

--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
igorold
Дата 28.8.2006, 06:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

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



может быть отличие в версиях MySQL ....  smile 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
muzer
Дата 31.8.2006, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вообще отличие COUNT(*) и COUNT(column) заключается именно в обработке NULL'ов. В первом случае считается кол-во найденных строк, во втором случае - кол-во не NULL значений.
PM WWW   Вверх
WIPS
Дата 1.9.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 199
Регистрация: 22.5.2006
Где: Украина, Киев

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



muzer, похоже, что ты прав.
Сейчас не могу найти таблицу над которой упражнялся, но после экспериментов над др. таблицей есть предположение, что просто в старой таблице значение нуля было "not null". Вот он его и считал всегда одинаково.
--------------------
Автопроизводители, машины, марки, модели!
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




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


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

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