Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];

Вниз

проблема с запросом (count(*)+group by)   Найти похожие ветки 

 
SergP.   (2006-07-26 11:30) [0]

Пишу так:
select count(*) from TrafficH where  Client_ID=7 group by Zone_Id,Year,Month,Day

Но оказывается такой запрос делает не то что мне нужно.

Он возвращает несколько записей, а мне нужно именно количество последних.

т.е. по идее можно было бы сделать так:
select count(*) from
(select count(*) from TrafficH where  Client_ID=7 group by Zone_Id,Year,Month,Day)

Но имеющаяся у меня версия MySQL вложенные запросы не поддерживает.
Как выйти из положения?


 
Sergey13 ©   (2006-07-26 11:34) [1]

select Zone_Id,Year,Month,Day,count(*)
from TrafficH
where  Client_ID=7
group by Zone_Id,Year,Month,Day


 
SergP.   (2006-07-26 11:38) [2]

> [1] Sergey13 ©   (26.07.06 11:34)
> select Zone_Id,Year,Month,Day,count(*)
> from TrafficH
> where  Client_ID=7
> group by Zone_Id,Year,Month,Day


Неа... Мне нужно получить количество записей которые возвращает данный запрос...


 
SergP.   (2006-07-26 11:42) [3]

В принципе я могу просто выполнить
select count(*) from TrafficH where  Client_ID=7 group by Zone_Id,Year,Month,Day
и потом получить требуемое число через mysql_numrows   (на PHP скрипт пишу)
но как-то нехорошо получается... Ведь кол-во записей может быть большое...


 
Sergey13 ©   (2006-07-26 11:53) [4]

> [3] SergP.   (26.07.06 11:42)

Зачем тебе группировка в исходном запросе? Странный он какой-то вообще.


 
Плохиш ©   (2006-07-26 12:00) [5]


> SergP.   (26.07.06 11:30)  
> Пишу так:
> select count(*) from TrafficH where  Client_ID=7 group by
> Zone_Id,Year,Month,Day
>
> Но оказывается такой запрос делает не то что мне нужно.
>
> Он возвращает несколько записей, а мне нужно именно количество
> последних
.

Значит текст начиная с символов "group by" надо отбросить.


 
SergP.   (2006-07-26 12:02) [6]

> [4] Sergey13 ©   (26.07.06 11:53)
> > [3] SergP.   (26.07.06 11:42)
>
> Зачем тебе группировка в исходном запросе? Странный он какой-
> то вообще.


Почему странный?

Нужно узнать не количество сгрупированных записей по каждой из групп, как вышеупомянутые запросы делают, а количество групп


 
Плохиш ©   (2006-07-26 12:04) [7]


> Но имеющаяся у меня версия MySQL вложенные запросы не поддерживает.

Значит нужно установить ту, которая поддерживает.

PS. На основании [6] ответ [5] снимается :-)


 
Sergey13 ©   (2006-07-26 12:04) [8]

> [6] SergP.   (26.07.06 12:02)

У тебя получается:
"Если бы к глазам Иван Инваныча приделать нос Иван Егорыча..."
Свой запрос надо писать.


 
sniknik ©   (2006-07-26 12:06) [9]

> а количество групп
возможно пройдет чтото вроде этого (смутно припоминается от того времени что тестил MySql)

select count(distinct Zone_Id) from TrafficH


 
ЮЮ ©   (2006-07-26 12:08) [10]

a COUNT(DISTINCT Zone_Id + Year + Month + Day ) поддерживает?
+ здесь, естественно утрировано. имеется ввиду сцепление символьных представлений


 
SergP.   (2006-07-26 12:09) [11]

> Значит текст начиная с символов "group by" надо отбросить.


Допустим есть таблица:

field
1
2
3
1
2
1
2
7

Если делать select field, count(*) from table group by field

то получим, что-то типа:

field  count
1      3
2      3
3      1
7      1


Т.е. 4 записи и в каждой кол-во сгрупированых по данной группе.

А мне нужно получить кол-во групп, т.е. в данном случае это будет 4


 
ЮЮ ©   (2006-07-26 12:13) [12]

как насчет
 SELECT COUNT(DISTINCT field)
поддерживает?


 
SergP.   (2006-07-26 12:16) [13]

> a COUNT(DISTINCT Zone_Id + Year + Month + Day ) поддерживает?


О... это оно...Вот только данные поля у меня числовые...

С учетом размерности полей, вот такое:
select COUNT(DISTINCT 100000000*Zone_Id + 10000*Year + 100*Month + Day )
from TrafficH
where  Client_ID=7

работает нормально... (просто я не помню функции как число перевести в символьное представление на MySQL, хотя не мешало бы так сделать)
Может кто подскажет?
Хотя имхо


 
ЮЮ ©   (2006-07-26 12:27) [14]

100000000*Zone_Id + 10000*Year + 100*Month + Day, пожалуй, не хуже  символьного представления будет. Я имел в виду именно то, что ты исделал, однозначно представить 4 поля как 1


 
sniknik ©   (2006-07-26 12:30) [15]

> хотя не мешало бы так сделать
зачем? притормозить его хочеш? строковые операции медленнее числовых.


 
partizan   (2006-07-26 12:51) [16]

А чем плохо просто написать count( distinct f1,f2,f3)?
Вроде работает.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.041 c
2-1157630697
XAN
2006-09-07 16:04
2006.09.24
programma iz delphi


15-1156954704
Rule
2006-08-30 20:18
2006.09.24
Поздравте меня, я уже не безработаный :-)))


15-1157101383
Gorlum
2006-09-01 13:03
2006.09.24
Ну и нафига они это сделали


2-1157101100
TakTak
2006-09-01 12:58
2006.09.24
время работы в миллисекундах.


15-1157248529
Думкин
2006-09-03 05:55
2006.09.24
По поводу одного поста Иксика и свободе слова





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский