07.02.2002, 13:26 | #1 |
Участник
|
Как построить select
Есть задача: необходимо получить количество уникальных значений определённого поля в таблице. Тип поля - более менее произвольный (т.е. простой) Т.е. нужен аналог запроса: SELECT COUNT(DISTINCT Field) FROM Table.
Пример: Пусть таблица имеет поле Field. Таблица содержит записи Field 1 2 4 1 1 1 На выходе запроса: - 3 Хотелось бы сделать средствами AXAPTA (без использования подключения к серверу через класс Connection) и, конечно же, без использования while. |
|
26.04.2002, 15:55 | #2 |
Участник
|
вообще вопрос конечно простой с точки зрения классического SQL однако можно попробовать делать типа такого select count(Field) from Table group by Field не факт что это будет работать по крайне мере даже не помню получалось ли у меня, хотя может надо бы поставить sp3
|
|
27.04.2002, 08:36 | #3 |
Участник
|
while select count(field) from table
group by field { print table.field; } |
|
21.01.2004, 16:46 | #4 |
Гость
|
Цитата:
Изначально опубликовано mazzy
while select count(field) from table group by field { print table.field; } НЕ РАБОТАЕТ!!! выдает значение field, а не count по группе(ам)!!! что делать, уваж MAZZY??? |
|
21.01.2004, 17:45 | #5 |
NavAx
|
А так?
PHP код:
|
|
21.01.2004, 18:01 | #6 |
----------------
|
Не прошло и 2х лет с опубликования вопроса .. и найденого ответа.
простыми способами результат не получить, остается только извращаться PHP код:
|
|
|
За это сообщение автора поблагодарили: _scorp_ (5). |
22.01.2004, 10:04 | #7 |
Гость
|
Wamr, прокомментируй, пож
Это первый код. Дает 8 групп
LedgerTable lt, myTable1, myTable2; ; while select count(recid) from lt group by AccountPlType { print strfmt('%1 %2',lt.AccountPlType,lt.RecId); } Это второй (твой) код, дает число 126 LedgerTable lt, myTable1, myTable2; ; select count(RecId) from myTable1 notexists join myTable2 where myTable2.AccountPlType == myTable1.AccountPlType && myTable2.RecId > myTable1.RecId; info(int2str(myTable1.RecId)); Нужно было: получить число 8 |
|
22.01.2004, 10:45 | #8 |
----------------
|
Проверьте RecId
Так как у меня получилось 5 = 5 ---------------- Добавлено на результат влияет значение параметра CacheLookup. Если оно отлично от EntireTable, то считается нормально |
|
22.01.2004, 11:43 | #9 |
Гость
|
да уж
у меня - Entire Table.
Еще не проверил , будет ли работать, но -метод работающий нестабильно, довольно сложно применять. -Да и результат его работы внушает сомнение. -я, по наивности, думал, что кеширование влияет на скорость, а не результат... |
|