|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
есть две таблицы (это сильно упрощённый пример) ид имя пользователя ------------------------ 1 иван 2 виктор ид ид_пользователя одежда тип ---------------------------------------------------- 1 1 рубашка белая 2 1 брюки чёрные 3 2 рубашка синяя как составить запрос чтоб получить такую таблицу: пользователь рубашка брюки --------------------------------------------------------- иван белая чёрные виктор синяя <null> желательно чтоб не прибегать ко вложенным полноразмерным SELECT на запрос каждого типа одежды ибо это буду практически одинаковые SELECT и очень очень длинные в оригинале ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 14:30 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
kmskmskms, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2021, 14:45 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
а какую роль тут играет max? зачем отбирать максимальное значение ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 11:41 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
Если на вход подать такие данные: ид ид_пользователя одежда тип ---------------------------------------------------- 1 1 рубашка белая 2 1 рубашка синяя Как определить, какую рубашку вывести в колонку "рубашка"? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 11:46 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
случайным образом, первую строку которая попадается в бд ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 12:18 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
kmskmskms, Это был риторический вопрос. Я так попытался объяснить, зачем нужен max. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 13:03 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
так всётаки можно както вместо MAX использовать чтото отбирающее первую попавшуюся строку. И второй вопрос, кроме PIVOT есть какойто способ получить подобную выборку, ведь раньше PIVOT не существовало, как делали такие выборки ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 13:05 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
kmskmskms, max + decode + group by ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 13:09 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
kmskmskms так всётаки можно както вместо MAX использовать чтото отбирающее первую попавшуюся строку. Можешь min или любую другую агрегатную функцию на свой вкус. Без pivot можно использовать max + case например ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 13:10 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
PIVOT - это 11g, ему уже более 10 лет. Но если очень нужно без него, то можно так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Что касается случайной записи вместо max... Что-то сложно представить, в какой ситуации полезен запрос, возвращающий разный результат при каждом запуске. Это вам в казино, а не в СУБД. Но чисто гипотетически - можно сделать подзапрос, с удалением дубликатов с помощью row_number, dense_rank, и т.п. В окне сделать сортировку по dbms_random.value (или вообще по null, если никакая не нужна). А потом уже из этого подзапроса доставать данные моим прошлым запросом. Но это всё лишние приседания и сортировки непонятно ради чего. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 13:18 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
PuM256, ок, оба примера не выведут пользователя, если у него нет вещей так как идёт жёсткая привязка where u.id = c.userid. Как поменять выборку чтоб пользователь выводился в любом случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 13:29 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 13:42 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
только джойнами значит, ок ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 14:01 |
|
запрос на выборку строк как столбцов
|
|||
---|---|---|---|
#18+
Джоин-то и так есть, нужно превратить inner join в outer join: where u.id = c.userid(+) Ну или аналогично через left join. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.11.2021, 14:04 |
|
|
start [/forum/topic.php?fid=52&fpage=9&tid=1879776]: |
0ms |
get settings: |
18ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
45ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
364ms |
get tp. blocked users: |
2ms |
others: | 371ms |
total: | 813ms |
0 / 0 |