Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.027 c
15-1157187204
Новичоккк
2006-09-02 12:53
2006.09.24
Можно ли откомпилировать проект без запуска Delphi


15-1157295084
vrem
2006-09-03 18:51
2006.09.24
Раскол


15-1157124935
AxelBlack
2006-09-01 19:35
2006.09.24
Программка для .tif


3-1153747299
VALUA
2006-07-24 17:21
2006.09.24
DBGRID - как поместить графическое изображение в колонку


15-1156058656
Kolan
2006-08-20 11:24
2006.09.24
Принимайте в клуб :) Тоже женился :)




   Наверх