|
Запрос к табличке с группировкой
|
|||
---|---|---|---|
#18+
Имеется табличка IDDPIDDSSTRDDATE11q12009-01-0721q22009-01-0831q32009-01-0442q42009-02-2752q52009-01-2762q62009-01-0173q72009-01-1583q82009-01-1793q92009-01-22104q102009-01-27 необходимо получить сгруппированные записи по полю PIDD. Для каждой записи получить соответствующее значение поля SSTR. Значения поля SSTR должны отбираться из групп записей и соответствовать максимальной дате из группы. В итоге мы должны получить табличку PIDDSST1q22q43q94q10 В Oracle это можно получить выполнив запрос Код: plaintext 1. 2. 3. 4. 5.
Меня интересует как это можно осуществить через провайдер фокса Microsoft OLE DB Provider for VFP 9.0 SP2 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2009, 21:14 |
|
Запрос к табличке с группировкой
|
|||
---|---|---|---|
#18+
Как то вот так. Уверен, что в оракле такой синтаксис тоже поддерживается. select pidd, max(sstr) from atd t group by pidd where t.ddate in (select max(ddate) from atd d where d.pidd=t.pidd) Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2009, 05:25 |
|
Запрос к табличке с группировкой
|
|||
---|---|---|---|
#18+
PaulWist Выбрать из дочерней таблицы записи с максимальной датой Давно видел эту статью и всегда было непонятно - в случае ограничения на родительские записи - запрос в сатье будет лопатить всю дочернюю таблицу. Уж лучше коррелированный подзапрос(если есть связь по индексу), тем более пишут что оптимизатор не выполняет его N раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2009, 12:17 |
|
Запрос к табличке с группировкой
|
|||
---|---|---|---|
#18+
Интересное решение в запросе Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2009, 17:57 |
|
Запрос к табличке с группировкой
|
|||
---|---|---|---|
#18+
Работать будет всегда с одинаковым (ожидаемым) результатом в том случае, если пара pidd и max(ddate) - дает уникальный результат (т.е. в таблице есть только одна строка с такими значениями) для всех сочетаний pidd и max(ddate). Например, если max(date) и pidd не дают уникального результата: ppid date sstr 1 01.01.2009 1 1 01.01.2009 2 1 01.01.2009 3 sstr будет равен 3, хотя для данного сочетания ppid и date есть еще и 1,2 Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2009, 06:09 |
|
Запрос к табличке с группировкой
|
|||
---|---|---|---|
#18+
kiruhaPaulWist Выбрать из дочерней таблицы записи с максимальной датой Давно видел эту статью и всегда было непонятно - в случае ограничения на родительские записи - запрос в сатье будет лопатить всю дочернюю таблицу. Уж лучше коррелированный подзапрос(если есть связь по индексу), тем более пишут что оптимизатор не выполняет его N раз. Вот пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Что говорит результат. 1. Накладывается "фильтр" на табличку Master используя индекс F1 (оптимизация по Цруку ЬюА1 = 1) 2. На таблицу Details "фильтр" не накладывается, поскольку нет в секции where 3. После чего происходит обьединение двух таблиц, где уже используется индекс Master_f1 для таблицы Details. Отсюда вывод, что оптимизатор фокса не "лопатит" таблицу деталей всю, ну естественно если по полю/условию связки (join) есть индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2009, 10:27 |
|
Запрос к табличке с группировкой
|
|||
---|---|---|---|
#18+
Вот это автор (оптимизация по Цруку ЬюА1 = 1) читать как (оптимизация по Where M.f1 = 1) PS раскладка не переключилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2009, 10:28 |
|
Запрос к табличке с группировкой
|
|||
---|---|---|---|
#18+
PaulWist, В статье другой запрос (беру самый простой случай ) Код: plaintext 1. 2. 3. 4. 5.
В 95% случаях пользователям не нужны все записи . Например отбор по полю Country родительской таблицы, получаю : Код: plaintext 1. 2. 3. 4. 5. 6.
И даже если в родительской всего 2 записи, подзапрос Код: plaintext
у меня, например, может быть 50 Мб. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2009, 11:26 |
|
Запрос к табличке с группировкой
|
|||
---|---|---|---|
#18+
не нужно ли писать это подзапрос как Код: plaintext 1.
кстати у автора именно такой получился ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2009, 11:55 |
|
|
start [/forum/topic.php?fid=41&msg=35783702&tid=1586827]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 340ms |
total: | 479ms |
0 / 0 |