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