|
|
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
transposerи кстати, чтобы два раза не вставать. Может я чего так и не понял за два года, но case when по прежнему мой лучший друг. достало.Если внимательней читать - можно увидеть слово pivot. В Oracle и MSSQL оно есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2012, 15:31 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
transposerМне интересен теоретический ответ о том, почему в стандарте SQL до сих пор нет просто одной команды, которая бы это делала? Потому что SQL работает с таблицами, а не с матрицами. Это совсем не одно и то же. Если интересно, в чём разница, найди сам определение математической матрицы и реляционной таблицы. Дам подсказку: кол-во столбцов в таблице всегда конечно и фиксировано во время жизни этой таблицы. Кол-во строк таблицы не ограничено, и может потенциально быть бесконечно большим. transposerЕсть теоретическая проблема, которая не дает написать такую функцию и встроить ее в SQL? Да, есть. Люди, пишущие на SQL работают с реляционными данными, а не с матрицами, такие операции им просто ни на фиг не нужны. Ну и они теоретически не могут быть реализованы. transposerВ SAS есть proc transpose; в разных программах типа Teradata Miner есть модули, которые пишут SQL для этого; на форуме тоже можно найти разные скрипты. А вот так чтобы сказать Код: sql 1. такого нигде нет. Почему? Почему такое невозможно в SQL я уже написал. Почему такие функции есть во всяких OLAP-средствах -- потому что 95 процентов людей идиоты, и им не объяснить, что эту операцию невозможно реализовать на реляционной таблице, потому что они как привыкли работать в своём долбанутом Excel-е, так и думают, что с таблицей можно делать то же самое. И этим идиотам не вдолбить в их башку, что эта операция им не нужна и что на самом деле они хотят распечатать красивый отчёт, и в общем-то по горизонтали его смотреть или по вертикали -- один хрен. А конкуренция заставляет производителей реализовывать такие вещи, потому что просто если они это не сделают, то эти бараны у них не купят их продукт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 00:49 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
Блин, купился на некропостинг. Модераторы, удалите пож. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 00:51 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
> и кстати, чтобы два раза не вставать. Может я чего так и не понял за два года, > но case when по прежнему мой лучший друг. достало. А, всё-таки мой пост будет полезен, раз он за 2 года так ничего и не понял. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 00:53 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
> и кстати, чтобы два раза не вставать. Может я чего так и не понял за два года, > но case when по прежнему мой лучший друг. достало. Да, ещё на счёт теории. Если ты транспонируешь таблицу, несколько значений одной колонки из разных строк становятся значениями разных колонок одной строки. Получающаяся таблица нарушает 1ую нормальную форму рел. таблицы. Далее все вытекающие. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2012, 00:55 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
MasterZivПочему такое невозможно в SQL я уже написал. Почему такие функции есть во всяких OLAP-средствах -- потому что 95 процентов людей идиоты, и им не объяснить, что эту операцию невозможно реализовать на реляционной таблице, потому что они как привыкли работать в своём долбанутом Excel-е, так и думают, что с таблицей можно делать то же самое. И этим идиотам не вдолбить в их башку, что эта операция им не нужна и что на самом деле они хотят распечатать красивый отчёт, и в общем-то по горизонтали его смотреть или по вертикали -- один хрен. А конкуренция заставляет производителей реализовывать такие вещи, потому что просто если они это не сделают, то эти бараны у них не купят их продукт.Транспонивароть с известным числом столбцов позволяет pivot. С неизвестным - pivot for xml in Oracle, как я уже сказал. Если хочется полной гибкости - ODCITable . Да, в SQL на этапе parse должно быть известно число столбцов, но ты не поверишь, в реальной жизни огромное число случаев когда пользователям есть смысл видеть данные по двум осям. Это я не к тому, что есть реальный смысл именно в транспонировании, а к тому, что на SQL все возможно при желании и видеть здесь твой бред про идиотов написанный в таком безапелляционном тоне несколько смешно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 14:10 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopДа, в SQL на этапе parse должно быть известно число столбцов, но ты не поверишь, в реальной жизни огромное число случаев когда пользователям есть смысл видеть данные по двум осям. Это не означает, что SQL должен возвращать выборку по двум осям. Равно как "огромное число случаев когда пользователям есть смысл видеть график", но это не означает, что SQL должен возвращать картинку этого графика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 16:20 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
softwarerdbms_photoshopДа, в SQL на этапе parse должно быть известно число столбцов, но ты не поверишь, в реальной жизни огромное число случаев когда пользователям есть смысл видеть данные по двум осям. Это не означает, что SQL должен возвращать выборку по двум осям.Я с этим и не спорил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 16:44 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
> в реальной жизни огромное число случаев когда пользователям есть смысл видеть > данные по двум осям. Это я не к тому, что есть реальный смысл именно в > транспонировании, а к тому, что на SQL все возможно при желании и видеть здесь Это всё не SQL уже. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 17:19 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
MasterZiv > в реальной жизни огромное число случаев когда пользователям есть смысл видеть > данные по двум осям. Это я не к тому, что есть реальный смысл именно в > транспонировании, а к тому, что на SQL все возможно при желании и видеть здесь Это всё не SQL уже. Пожалуй тоже соглашусь. Это дело "отображающего" средства. Хотя и можно придумать случай, когда на веб страничке надо отобразить данные по двум осям и логику выносить из базы по некоторым причинам нецелесообразно. З.Ы. Просто не надо было так про ОЛАП и эксель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 18:33 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopХотя и можно придумать случай, когда на веб страничке надо отобразить данные по двум осям и логику выносить из базы по некоторым причинам нецелесообразно. dbms_xplan.display() :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 18:35 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
softwarerdbms_photoshopХотя и можно придумать случай, когда на веб страничке надо отобразить данные по двум осям и логику выносить из базы по некоторым причинам нецелесообразно. dbms_xplan.display() :)Не понял намека. dbms_xplan.display() возвращает коллекцию dbms_xplan_type который собой представляет Код: sql 1. То есть, несколько колонок склеены в одну. Не вижу здесь горизонтальной оси. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 18:49 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
> Пожалуй тоже соглашусь. Это дело "отображающего" средства. > Хотя и можно придумать случай, когда на веб страничке надо отобразить данные по > двум осям и логику выносить из базы по некоторым причинам нецелесообразно. Это -- типичная логика представления данных. В БД ей делать нечего. Это ещё можно реализовать на среднем слое, на всяких там Java, PHP, а ещё лучше -- на клиенте, напр. на JS. > З.Ы. Просто не надо было так про ОЛАП и эксель. Надо, надо. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 19:04 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
> То есть, несколько колонок склеены в одну. Не вижу здесь горизонтальной оси. А какая им разница, как 1НФ нарушать, так или эдак ? Давай, лепи всё в строку, а на клиенте -- парсить строку и разбирать по колонкам... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 19:08 |
|
||
|
Почему в SQL нет DDL команды TRANSPOSE?
|
|||
|---|---|---|---|
|
#18+
MasterZiv> З.Ы. Просто не надо было так про ОЛАП и эксель. Надо, надо.Ага, спасибо. Этот комент говорит о высоком профессионализме и знании в ОЛАП. З.Ы. Я предпочитаю не лепить с последующим распарсиванием, если этого можно вменяемыми средствами избежать. Одно дело если источник данных SSAS, другое если Oracle, третье если Access. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2012, 19:27 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37735220&tid=1541758]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 436ms |

| 0 / 0 |
