Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

проблема с запросом (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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
15-1157625317
Parus
2006-09-07 14:35
2006.09.24
Созвездия


6-1146630038
unlink
2006-05-03 08:20
2006.09.24
idhttp косяк с прокси


15-1156351224
Новый_Игрок
2006-08-23 20:40
2006.09.24
Вот нашёл...IF игры


15-1157243641
RASkov
2006-09-03 04:34
2006.09.24
Сенькс за помощь


15-1157054618
Игорь Шевченко
2006-09-01 00:03
2006.09.24
Дима Акуличев aka DiamondShark, с днем рождения!