Форум: "Базы";
Текущий архив: 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.042 c