![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Группировка в таблицах - красивое решение? [D6, dBase, FoxPro]
StenKz © (2002-11-21 16:19:00)Есть ли красивое решение.
Необходимо групировать и суммировать значения и количество записей в таблице. Типа группировки в отчётах.
Как это сделать красиво без прямого перебора всех записей.
passm (2002-11-26 09:38:00) [1]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"е, насколько мне известно, поддерживается только один вложенный запрос...
GLUKAS (2002-11-26 08:04:00) [2]Простите великодушно...
Действительно я изначально не верно понял вопрос.... %)
то neXt: иногда я даже select+count использую для нумерации сортированных записей ...
BorisUK (2002-11-26 06:14:00) [3]Немного не так...
Вот так будет можно.
...field1, (select sum(SummField) from table1 t1, table2 t2 where t1.key=t2.key) AllSum, Field3...
Stenkz (2002-11-26 05:47:00) [4]А можно ли в операторе sum() ипользовать оператор select.
тоесть select sum (select ...)....
neXt (2002-11-25 18:49:00) [5]group by можно, например использовать вместо distinct на Sybase и MS 7.0 это на порядок более быстрая операция
neXt (2002-11-25 18:47:00) [6]>GLUKAS © (25.11.02 16:11)
>GROUP BY используется для для групировки вычисляемых полей с не вычисляемыми
это, простите, не совсем верно, - часный случай, group by - мощный инструмент и применим он не только к операциям с вычислимыми полям
Johnmen (2002-11-25 17:34:00) [7]>GLUKAS © (25.11.02 16:11)
Где в вопросе прозвучало "объединять таблицы" ?!
GLUKAS (2002-11-25 16:11:00) [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 16:04:00) [9]>StenKz © (25.11.02 15:32)
>Уже воплощаю.
Интересно, что именно ? :)))
А вообще-то, для группировки есть предикат GROUP BY, как было указано AndDem (21.11.02 16:37). Конечно, и с помощью UNION можно решить задачу, но это будет
1. некрасиво
2. самое главное - крайне медленно ! (медленнее во столько раз, сколько запросов объединяется UNION"ом [примерно])
StenKz (2002-11-25 15:32:00) [10]Спасибо всем .....
Уже воплощаю.
GLUKAS (2002-11-21 16:51:00) [11]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
OlegE (2002-11-21 16:46:00) [12]Есть компонент 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
StenKz (2002-11-21 16:38:00) [13]А можно по подробней как ...UNITom? :)
AndDem (2002-11-21 16:37:00) [14]Я, конечно, звиняюсь за вторжение, но когда говорят о группировке, у меня почему-то возникают ассоциации с GROUP BY, а не с UNIT...
GLUKAS (2002-11-21 16:23:00) [15]Объединяются таблица UNITом
но вот можно ли посчитать результирующий count незнаю...