Как в запросе подсчитать кол-во определенных значений
От: Voidvi  
Дата: 01.03.03 01:03
Оценка:
Используются 2 поля таблицы — title и state с названием и значением соответственно. Варианты значений поля state ограничены (от 1 до 4 ).
Как получить выборку чтобы в первой колонке было значение title а в следующих 4-х количество записей имеющих state=1,state=2 и т.д.
Используется BDE, таблица Paradox
Re: Как в запросе подсчитать кол-во определенных значений
От: mikkri Великобритания  
Дата: 01.03.03 05:29
Оценка:
Здравствуйте, Voidvi, Вы писали:

V>Используются 2 поля таблицы — title и state с названием и значением соответственно. Варианты значений поля state ограничены (от 1 до 4 ).

V>Как получить выборку чтобы в первой колонке было значение title а в следующих 4-х количество записей имеющих state=1,state=2 и т.д.
V>Используется BDE, таблица Paradox

Если не ошибаюсь, такое сделать на чистом SQL нельзя. Нужно либо использовать серверные расширения SQL, либо результат запроса на клиенте "обрабатывать".

Т.е. получаешь
select title, state, count(*) from your_table group by title, state

А потом на клиенте создаешь другой экзепляр рекордсета и заполняешь его как тебе нужно.

P.S. с BDE почти не работал, так что допускаю, что в нем есть какие-нибудь извращения, которые тебе помогут.
Re: Как в запросе подсчитать кол-во определенных значений
От: vvaizh http://izh-test.sourceforge.net/
Дата: 01.03.03 12:44
Оценка:
Здравствуйте, Voidvi, Вы писали:

V>Используются 2 поля таблицы — title и state с названием и значением соответственно. Варианты значений поля state ограничены (от 1 до 4 ).

V>Как получить выборку чтобы в первой колонке было значение title а в следующих 4-х количество записей имеющих state=1,state=2 и т.д.
V>Используется BDE, таблица Paradox

Можно в принципе нафантазировать такое:


select title, sum(if(state=1,1,0)), sum(if(state=2,1,0))), sum(if(state=3,1,0)), sum(if(state=2,1,0))
from your_fucking_table
group by title;


Но, признаться, я не знаком с Парадоксом (вообще не знаю, есть ли там if,
и как он называется, хотя в принципе можно вместо него придумать что нибудь
другое), а тут многое зависит от СУБД.. Если такое не получится, попробуй
сначала создать view типа

select title, if(state=1,1,0), if(state=2,1,0), if(state=3,1,0), if(state=2,1,0)
from your_fucking_table


А потом уже группировать..
http://izh-test.sourceforge.net/russian/introduction.html
Re: Как в запросе подсчитать кол-во определенных значений
От: ssm Россия  
Дата: 02.03.03 11:02
Оценка:
Здравствуйте, Voidvi, Вы писали:

V>Используются 2 поля таблицы — title и state с названием и значением соответственно. Варианты значений поля state ограничены (от 1 до 4 ).

V>Как получить выборку чтобы в первой колонке было значение title а в следующих 4-х количество записей имеющих state=1,state=2 и т.д.
V>Используется BDE, таблица Paradox

так попробуй:

select
(select count(*) from MyTable t1 where t1.title = t.title and t1.state = 1),
(select count(*) from MyTable t2 where t2.title = t.title and t2.state = 2),
(select count(*) from MyTable t3 where t3.title = t.title and t3.state = 3),
(select count(*) from MyTable t4 where t4.title = t.title and t4.state = 4)
from MyTable t
group by t.title
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.