Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть две таблицы: основная и детэйл где собираются некие показатели для мастера во времени (STAMP) Код: plaintext 1. 2. Так вот, нужно получить для мастеров одного слайса показатели для каждого в какой-то момент времени. Тоесть для одного мастера будет: Код: plsql 1. 2. 3. 4. Но как выбрать для всех сразу?, тоесть Код: plaintext Помогите плиз! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 11:37 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Dorin MarcociПробовал с CTE, derived tables Ничё себе. Начни с малого: описание оператора SELECT. Пойми, как с помощью него можно выбрать данные из нескольких таблиц. JOIN и прочее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 12:28 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 12:42 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Dorin Marcoci, ну вот тебе через CTE. Дальше медитируй с планами Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 13:00 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, спасибо! 1. смотрю не годится, так как в Вашем примере partitition over будет только в 3.0 2,3 наверное будут ресурсоемкие, так как в 2-ом две джоины с той же таблицы, 3 сначала находит макс запись а потом другой запрос выбирает остальные поля Похоже для файра самый оптимальный left join с SP где там тупо запрос для мастера. Было бы лучше если позволяло несколько плолей в подзапросе, типа: Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 13:15 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, Пробовал, работает, спасибо! Наверное так, запросом самое оптимальное, невзирая на повторное обращения к DETAIL-u (второй идет через ID так что должно быть быстро). Сделаю тесты с SP vs CTE и отпишусь. Спасибо всем! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 13:25 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Dorin Marcoci, такого не будет никогда ибо противоречит логике и стандарту. А вот это есть в стандарте Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. под него даже тикет сделан CORE-3435 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 13:27 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, это я про Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 13:28 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Симонов Дениспод него даже тикет сделан Под возможность вернуть из подзапроса tuple тоже вроде бы тикет есть... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 13:39 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, может там всё таки есть тикет про векторные cравнения? типа Код: sql 1. 2. 3. Мне тяжело представить как из подзапроса который записывается в предложении селект можно два и более поля вытащить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 13:50 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, Да, вот с LEFT JOIN LATERAL красиво получается, вот только немножко "ON 1=1" смущает :) Или в CTE чтоб можно было подсунуть параметр из мастера, но это тоже противоречит стандарту, ахинея типа Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 13:57 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисМне тяжело представить как из подзапроса который записывается в предложении селект можно два и более поля вытащить Я тоже не готов предложить готовый патч, но в принципе, там, где можно сформировать сингуляр, можно сформировать и вектор. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 14:02 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Симонов Денис... Мне тяжело представить как из подзапроса который ... Так Вы неправильно его готовьте :) Не в where такие, только в вверху такие или в крайнес случае Код: sql 1. Новые дополнения к стандарту sql-15 скоро ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 14:02 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Dorin Marcoci, это не только стандарту противоречит, но и здравому смыслу. Поскольку в CTE можно использовать только то что описано выше этой CTE. ON 1=1 в LATERAL можно тоже опустить вот так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Впрочем всё равно этого нет. Можешь проголосовать за этот тикет. Может когда-нибудь и появится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 14:04 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Dorin Marcoci, ты не путай использование предикатов с векторами и использование векторов в самом SELECT. Вот такой запрос Код: sql 1. 2. 3. 4. 5. должен означать, что подзапрос возвращает один столбец являющийся вектором, а не ещё 2 столбца. Даже если это будет реализовано, то по крайней мере придётся ещё переделывать драйвера и клиента для отображения таких столбцов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 14:10 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, Я имел ввиду чтоб движок "линиализировал" поля из подзапросу к базовым полям, чтоб было ограничение на одну запись. Прям как щас работает select M.ONE, (select max(D.TWO) from DETAIL D where D.MASTER_ID = M.ID) from MASTER M То что Вы говорите вообще нестед дата, помню было попытка у борланда такое сделать, компоненты были. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 14:20 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Короче left join СП лучший вариант пока. Тот же латерал только с боку :) Вот у элефанта есть такое с 9.3 http://www.postgresql.org/docs/9.4/static/queries-table-expressions.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 14:25 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Dorin Marcoci, не это фигня. Про датасет это ты вообще зря сказал. Тип возвращаемого поля - вектор это ещё куда не шло. В принципе можно сделать что-то такое Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Сейчас чувствую придут ДЕ и Влад и разнесут нас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 14:25 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Dorin Marcoci, LATERAL - это и есть сбоку. Перевод у него такой (боковой) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 14:30 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Симонов Денисдолжен означать, что подзапрос возвращает один столбец являющийся вектором, а не ещё 2 столбца. А что ему, собственно, мешает вернуть два столбца? Или что мешает движку развернуть вектор в отдельные столбцы при заполнении SQLDA?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 14:51 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, логика мешает. Любой подзапрос возвращает один филд, я могу ему алиас дать. Что потом с этим алиасом делать? Игнорировать? Получается "а тут рыбу заворачивали". Что там в других СУБД по этому поводу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 15:00 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисЛюбой подзапрос возвращает один филд, я могу ему алиас дать. Что потом с этим алиасом делать? Игнорировать? Ну, например, выкидывать ошибку "два столбца с одинаковым именем". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 15:35 |
|
||
|
Можно ли выполнить одним запросом?
|
|||
|---|---|---|---|
|
#18+
Dorin Marcoci 3 сначала находит макс запись а потом другой запрос выбирает остальные поляникто не мешает сделать это всё однопроходным аггрегирующим запросом. По итогу, получится один проход с агрегацией по деталям + джойн к мастер-таблице... другое дело - будет ли такое решение производительнее латерального подзапроса.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2015, 17:38 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38939302&tid=1562899]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 161ms |

| 0 / 0 |
