|
Выборка из 2 таблиц
|
|||
---|---|---|---|
#18+
Имеются 2 таблицы: coursework cw и delivery dl . Одной записи cw может соответствовать несколько dl . Как составить запрос, чтобы выбирались все записи из cw и для каждой из них выбиралась одна из dl так, чтобы dl.deliverydate была минимальной и возможно ли? Пытался сделать так: Код: sql 1. 2. 3. 4. 5.
но столбец "dl.score" должен фигурировать в предложении GROUP BY или использоваться в агрегатной функции. Если сделать агрегатную, то вывод будет некорректным, а если группировать, то выводятся все записи из dl . ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 18:15 |
|
Выборка из 2 таблиц
|
|||
---|---|---|---|
#18+
Mr.Andersson, старых рецептов полно. нео. но нынче в моде [LEFT JOIN] lateral (SELECT ... + order by ...[desc|asc] + limit 1). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 18:43 |
|
Выборка из 2 таблиц
|
|||
---|---|---|---|
#18+
qwwq, можно поподробнее на конкретном примере? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 19:22 |
|
Выборка из 2 таблиц
|
|||
---|---|---|---|
#18+
разобрался. Получилось вот так: Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2017, 20:45 |
|
Выборка из 2 таблиц
|
|||
---|---|---|---|
#18+
Mr.Anderssonразобрался. Получилось вот так: Код: sql 1. 2. 3.
Альтернативный вариант c DISTINCT ON Код: plsql 1. 2. 3. 4. 5. 6.
Какой из 2 вариантов будет быстрее - зависит от размеров таблиц, наличных индексов и прочих условий в запросе. При полном объединении 2х таблиц подозреваю что скорее все таки join / distinct on. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2017, 03:29 |
|
Выборка из 2 таблиц
|
|||
---|---|---|---|
#18+
Maxim BogukПри полном объединении 2х таблиц подозреваю что скорее все таки join / distinct on. -- Maxim Boguk если 1-я табличка на пару порядков и более короче 2-й -- уже сомнительно. а так, для сравнимых, -- да -- дистинкт с сортом по полному набору будет видимо дешевле нестед--лупа. если конечно пж (для лейтерела) на хеш--джойн сам не перейдёт. (там, навскидку, почти возможно. без лимитов он что--то такое точно умеет). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2017, 12:16 |
|
|
start [/forum/topic.php?fid=53&fpage=77&tid=1996649]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 358ms |
total: | 499ms |
0 / 0 |