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

Вниз

Группировка в таблицах - красивое решение?   Найти похожие ветки 

 
StenKz ©   (2002-11-21 16:19) [0]

Есть ли красивое решение.

Необходимо групировать и суммировать значения и количество записей в таблице. Типа группировки в отчётах.

Как это сделать красиво без прямого перебора всех записей.


 
GLUKAS ©   (2002-11-21 16:23) [1]

Объединяются таблица UNITом
но вот можно ли посчитать результирующий count незнаю...


 
AndDem   (2002-11-21 16:37) [2]

Я, конечно, звиняюсь за вторжение, но когда говорят о группировке, у меня почему-то возникают ассоциации с GROUP BY, а не с UNIT...


 
StenKz ©   (2002-11-21 16:38) [3]

А можно по подробней как ...UNITom? :)


 
OlegE ©   (2002-11-21 16:46) [4]

Есть компонент xQuery. Он позволяет делать запросы к DataSet.
TxQuery component is a TDataSet descendant component that can be used to query one or more TDataSet descendant components using SQL statements. It is implemented in Delphi 100% source code, no DLL required, because it implements its own SQL syntax parser and SQL engine.

http://www.sigmap.com/txquery.htm



 
GLUKAS ©   (2002-11-21 16:51) [5]

Unit объединяет звписи выборок абсолюстно соответствующих по структуре
т.е. не tabl1.pole1,tabl1.pole2,tabl2.pole1...
tabl1.pole1,tabl1.pole2,tabl2.pole1...
tabl1.pole1,tabl1.pole2,tabl2.pole1...

а tabl1.pole1,tabl1.pole2
tabl1.pole1,tabl1.pole2
tabl1.pole1,tabl1.pole2
tabl2.pole1,tabl2.pole2
tabl2.pole1,tabl2.pole2
tabl2.pole1,tabl2.pole2


 
StenKz ©   (2002-11-25 15:32) [6]

Спасибо всем .....
Уже воплощаю.



 
Johnmen ©   (2002-11-25 16:04) [7]

>StenKz © (25.11.02 15:32)
>Уже воплощаю.

Интересно, что именно ? :)))

А вообще-то, для группировки есть предикат GROUP BY, как было указано AndDem (21.11.02 16:37). Конечно, и с помощью UNION можно решить задачу, но это будет
1. некрасиво
2. самое главное - крайне медленно ! (медленнее во столько раз, сколько запросов объединяется UNION"ом [примерно])


 
GLUKAS ©   (2002-11-25 16:11) [8]

Чтото я не пойму каким образом с помощью GROUP BY объединять таблицы???
GROUP BY используется для для групировки вычисляемых полей с не вычисляемыми
Example:
Select t.pole1,t.pole2,(t.pole1+t.pole2)as Suma
from tabl1 t
Group by t.pole1,t.pole2

И не иначе!!!!!


 
Johnmen ©   (2002-11-25 17:34) [9]

>GLUKAS © (25.11.02 16:11)

Где в вопросе прозвучало "объединять таблицы" ?!


 
neXt ©   (2002-11-25 18:47) [10]

>GLUKAS © (25.11.02 16:11)
>GROUP BY используется для для групировки вычисляемых полей с не вычисляемыми

это, простите, не совсем верно, - часный случай, group by - мощный инструмент и применим он не только к операциям с вычислимыми полям


 
neXt ©   (2002-11-25 18:49) [11]

group by можно, например использовать вместо distinct на Sybase и MS 7.0 это на порядок более быстрая операция


 
Stenkz ©   (2002-11-26 05:47) [12]

А можно ли в операторе sum() ипользовать оператор select.

тоесть select sum (select ...)....


 
BorisUK ©   (2002-11-26 06:14) [13]

Немного не так...
Вот так будет можно.
...field1, (select sum(SummField) from table1 t1, table2 t2 where t1.key=t2.key) AllSum, Field3...


 
GLUKAS ©   (2002-11-26 08:04) [14]

Простите великодушно...
Действительно я изначально не верно понял вопрос.... %)
то neXt: иногда я даже select+count использую для нумерации сортированных записей ...


 
passm ©   (2002-11-26 09:38) [15]

GLUKAS © (25.11.02 16:11)> GROUP BY используется для групировки вычисляемых полей с не вычисляемыми . Небольшое уточнение: Не вычисляемых, а агрегатных. Эквивалентный запрос:
SELECT DISTINCT T1.FIELD1, T1.FIELD2, (T1.FIELD1 + T1.FIELD2) AS T_SUM
FROM TABLE1 AS T1
(Но, на FoxPro он будет работать действительно медленнее.)

BorisUK © (26.11.02 06:14)> Либо так:
SELECT T1.FIELD1, T1.FIELD1 * T2.F_COUNT
FROM (SELECT Q1.FIELD1, COUNT(Q1.FIELD2) AS F_COUNT
FROM TABLE1 AS Q1
GROUP BY Q1.FIELD1) AS T2
INNER JOIN TABLE1 AS T1 ON (T1.FIELD1 = T2.FIELD1)
На Fox"е, насколько мне известно, поддерживается только один вложенный запрос...



Страницы: 1 вся ветка

Текущий архив: 2002.12.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
1-36095
Дельфи
2002-12-02 23:06
2002.12.12
```


1-36082
greenrul
2002-11-27 20:49
2002.12.12
SKINZ/Скины/Шкурки.


1-36172
новенькая
2002-12-04 08:08
2002.12.12
помогите


14-36370
Basilio
2002-11-21 12:15
2002.12.12
Блин, где логин?


4-36460
@Ujin
2002-10-30 12:17
2002.12.12
Как грамотно засунуть форму в dll?