|
|
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Выбегалло dmidek У Выбегалло трудности в приведении к стандартам SQL :-) У меня ? Да я тут единственный, кто ваши оракловские расширения переводит на нормальный язык. Ну посмотрим Ваш перевод. Выбегалло Bogdanov Andrey ВыбегаллоА нарисуйте мне SELECT A,B,C from table1 WHERE id = 1 and datastamp = '2007-07-26' ? У меня заняло 30 секунд запрос напечатать - сколько у вас займет ? Код: plaintext 1. Итого секунд 25. Ну а вообще, никто не мешает сделать view. ВыбегаллоИ, кстати, вы как собираетесь char-ы с int-ами хранить - кошерно, в отдельных таблицах, или все в varchar-ы преобразовывать будете ? В условиях тестовой задачи было четко сказано "значения типа int". А в реальной жизни я буду выбирать способ хранения наиболее адекватный задаче. Вы, Андрей, извиняюсь, написали за 25 секунд полную фигню. Начнем с того, что вы попутали RecordID (аналог Row ID, внутренняя переменная) с колонкой ID. Что собственно доказывает мой пойнт - для работы с такими структурами надо иметь немало серого вещества в голове и свободного времени на руках. Ваш SELECT : select ColValue A, ColValue B, ColValue C from EmptyTable where RecordId = 1; Результаты : A,B,C 11,11,11 21,21,21 31,31,31 1,1,1 Ну полная фигня, верно ? Смотрите , Выбегалло, что Вы делаете. Берете селект Андрея, обзываете его полной фигней , а затем переводите. Перевод заключатеся в том, что Вы выбрасываете DECODE и оставляете только третий параметр Код: plaintext Такой метод перевода хорошо известен. Начинающему говорят "Выбрасывайте все незнакомые слова, оставляйте только то, что знаете". К сожалению, здесь такой прием не работает и показывает только Вашу вопиющую безграмотность, которая вкупе с апломбом производит совершенно удручающее впечатление. Не позорьтесь, скажите прямо "Я не знаю , что значит DECODE" И ВЫ еще меня спрашивали "А на фига здесь DECODE ?" Я подумал "Глубоко копает" А выясняется, да Вы просто не знаете. Теперь посмотрим Ваш другой опус. ВыбегаллоРезультаты drev (идея получше), но все равно фигня получается : select max(A), max(B), max(C) from ( select ColValue A, ColValue B, ColValue C, RecordId from emptyTable a where exists ( select 1 from EmptyTable b where b.RecordId = a.RecordId and b.ColId = 4 and b.ColValue = 1) ) tmpr group by RecordId max(a.ColValue as A), max(a.ColValue as B), max(a.ColValue as C) 31,31,31 32,32,32 В общем, думайте еще. Тот же самый приемчик.DECODE выброшен на свалку истории. Фигня конечно, которую Вы и произвели на свет Божий. dmidek По-моему, у вас склероз. Это я просил изобразить селект на СТАНДАРТНОМ SQL. И даже продемонстрировал пример с CASE. Вы себя на поприще умения работать со стандартом пока никак не проявили, так что сейчас как раз подходящий момент показать крутизну. А ваш "общий случай" не работает хотя бы потому, что вы не возвращаете четвертую колонку (ID ) - соответственно фильтр накладывать не на что. Ха-ха-ха, что значит "не работает" ? Вы результат видели ? Он получен в Oracle. Для фильтрации по определенному полю, его не надо указывать в select- списке Если мне понадобится представление, о котором я ничего не говорил, я добавлю ,col4 в результипующий SELECT. Это надеюсь понятно ? Выбегалло, Вы лучше философствуйте. Не надо опускаться до уровня кода. А то уж больно смешно выглядит. P.S. Как там мой примерчик ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2007, 11:19 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Вот drev - он повыделывался с decode, а потом взял и перевел в стандартные joinы . Типа могет человек. А вы только языком трепать горазды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2007, 21:24 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
dmidek Выбегалло dmidek У Выбегалло трудности в приведении к стандартам SQL :-) У меня ? Да я тут единственный, кто ваши оракловские расширения переводит на нормальный язык. Ну посмотрим Ваш перевод. Выбегалло Bogdanov Andrey ВыбегаллоА нарисуйте мне SELECT A,B,C from table1 WHERE id = 1 and datastamp = '2007-07-26' ? У меня заняло 30 секунд запрос напечатать - сколько у вас займет ? Код: plaintext 1. Итого секунд 25. Ну а вообще, никто не мешает сделать view. ВыбегаллоИ, кстати, вы как собираетесь char-ы с int-ами хранить - кошерно, в отдельных таблицах, или все в varchar-ы преобразовывать будете ? В условиях тестовой задачи было четко сказано "значения типа int". А в реальной жизни я буду выбирать способ хранения наиболее адекватный задаче. Вы, Андрей, извиняюсь, написали за 25 секунд полную фигню. Начнем с того, что вы попутали RecordID (аналог Row ID, внутренняя переменная) с колонкой ID. Что собственно доказывает мой пойнт - для работы с такими структурами надо иметь немало серого вещества в голове и свободного времени на руках. Ваш SELECT : select ColValue A, ColValue B, ColValue C from EmptyTable where RecordId = 1; Результаты : A,B,C 11,11,11 21,21,21 31,31,31 1,1,1 Ну полная фигня, верно ? Смотрите , Выбегалло, что Вы делаете. Берете селект Андрея, обзываете его полной фигней , а затем переводите. Перевод заключатеся в том, что Вы выбрасываете DECODE и оставляете только третий параметр Код: plaintext Такой метод перевода хорошо известен. Начинающему говорят "Выбрасывайте все незнакомые слова, оставляйте только то, что знаете". К сожалению, здесь такой прием не работает и показывает только Вашу вопиющую безграмотность, которая вкупе с апломбом производит совершенно удручающее впечатление. Не позорьтесь, скажите прямо "Я не знаю , что значит DECODE" Мне как-то глубоко покласть на ваше мнение о моей (без)грамотности, удивляет только, с какого перепугу вы решили, что оракловские расширения должны быть известны разработчикам других платформ. А select Андрея - он что без decode, что с decode - работать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2007, 21:30 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
ВыбегаллоВот drev - он повыделывался с decode, а потом взял и перевел в стандартные joinы . Типа могет человек. drev допустил маленькую ошибочку. Надо так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ИМХО это overkill и первый вариант в 100 раз лучше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2007, 22:04 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
dmidek ВыбегаллоВот drev - он повыделывался с decode, а потом взял и перевел в стандартные joinы . Типа могет человек. drev допустил маленькую ошибочку. Надо так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ИМХО это overkill и первый вариант в 100 раз лучше... А в каких диалектах нужно обязательно указывать ID в селект-листе, чтобы использовать в WHERE? Я так навскидку не помню. Да, оверкилл, но схема легче расширяется, если у нас колонки разных типов и для хранения используются несколько таблиц: для int, float, varchar, etc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2007, 22:18 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Выбегалло Мне как-то глубоко покласть на ваше мнение о моей (без)грамотности, удивляет только, с какого перепугу вы решили, что оракловские расширения должны быть известны разработчикам других платформ. Да дело же совсем не в этом. Я вот совершенный ноль и в Sybase и в Informix, и в чем только нет, но это же не повод проводить вивисекцию кода и озвучивать неверные результаты ... Впрочем, это не оправдывает мой резкий тон. Извините пожалуйста, был в "реальном" очень дурном настроении :-( Выбегалло А select Андрея - он что без decode, что с decode - работать не будет. Здесь Вы правы, он нуждается в легкой доработке напильничком. В одном случае получится вариант drev, вот у меня еще такой симпатичный получился ... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2007, 22:28 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
drev dmidek ВыбегаллоВот drev - он повыделывался с decode, а потом взял и перевел в стандартные joinы . Типа могет человек. drev допустил маленькую ошибочку. Надо так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ИМХО это overkill и первый вариант в 100 раз лучше... А в каких диалектах нужно обязательно указывать ID в селект-листе, чтобы использовать в WHERE? Я так навскидку не помню. Да, оверкилл, но схема легче расширяется, если у нас колонки разных типов и для хранения используются несколько таблиц: для int, float, varchar, etc. Дело вовсе не в этом, у Вас была описка select t1.ColValue A, t1.ColValue B, t1.ColValue C, t1.ColValue ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2007, 22:32 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
dmidek Дело вовсе не в этом, у Вас была описка select t1.ColValue A, t1.ColValue B, t1.ColValue C, t1.ColValue ID aaa )))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2007, 22:37 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
ВыбегаллоВы техзадания тоже как понимаете ? Или просто незнакомы со стандартом ? Повторяю задачу : написать SQL понимаемый большинством СУБД. Это значит, не надо использовать DECODE, ROWNUM, и MOD тоже нежелателен (без него вполне можно обойтись). Так уж и быть, SELECT from (SELECT) достаточно легко эмулировать. Слава богу, что не вы мне техзадания выдаете. Я приводил пример хранения разреженных массивов в ORACLE. Вас этот пример не устроил тем, что в не смогли перенести его на другие СУБД. Извините, но это идиотизм. Мы либо обсуждаем реализацию разреженных массивов на Oracle, либо на других СУБД. По-поводу Oracle я все сказал, а про другие СУБД ничего говорить не хочу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 09:34 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey ВыбегаллоВы техзадания тоже как понимаете ? Или просто незнакомы со стандартом ? Повторяю задачу : написать SQL понимаемый большинством СУБД. Это значит, не надо использовать DECODE, ROWNUM, и MOD тоже нежелателен (без него вполне можно обойтись). Так уж и быть, SELECT from (SELECT) достаточно легко эмулировать. Слава богу, что не вы мне техзадания выдаете. Я приводил пример хранения разреженных массивов в ORACLE. Вас этот пример не устроил тем, что в не смогли перенести его на другие СУБД. Извините, но это идиотизм. Мы либо обсуждаем реализацию разреженных массивов на Oracle, либо на других СУБД. По-поводу Oracle я все сказал, а про другие СУБД ничего говорить не хочу. ничего специфически ораклового в задаче нет, и решается она вполне замечательно средствами стандартного SQL , причем двумя вариантами - с JOIN и с GROUP BY. Не знаю что лично вы обсуждали, а я обсуждал недостатки данной модели, которые на всех СУБД одинаковы - непрозрачность запросов для разработчиков и для оптимизатора. Первую проблему вы прекрасно проиллюстрировали на собственном примере. И это в самом упрощенном варианте. Вы попробуйте написать селект, использующий разные типы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 10:43 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Выбегаллоничего специфически ораклового в задаче нет, и решается она вполне замечательно средствами стандартного SQL , причем двумя вариантами - с JOIN и с GROUP BY. Не знаю что лично вы обсуждали, а я обсуждал недостатки данной модели, которые на всех СУБД одинаковы - непрозрачность запросов для разработчиков и для оптимизатора. Первую проблему вы прекрасно проиллюстрировали на собственном примере. И это в самом упрощенном варианте. Вы попробуйте написать селект, использующий разные типы данных. Не знаю о каких модели вы говорите. Бред в качестве недостатков реляционных СУБД (точнее в качестве примущества cache над реляционными СУБД) назвал неумение ими компактно хранить разреженные массивы. И предложил некий тест, который по его мнению, показывал это неумение. Я своим примером показал, что вопрос компактного хранения - это исключительно вопрос умения спроектировать базу данных. И на oracle "бредовский тест" может быть реализован ровно с теми же параметрами по занимаемому объему, что и на cache. Вы же почему-то в ответ на это решили обсуждать недостатки какой-то там модели. И при этом, по-всей видимости, занесли меня в сторонники этой самой модели. Давайте отделим мух от котлет. Если вам интересно обсуждать некую модель - пожалуйста, но вряд ли я буду вашим оппонентом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 11:23 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Выбегалло Вы попробуйте написать селект, использующий разные типы данных. Но проблема же здесь в этом случае не в селекте, а в выборе изначально неверного типа для ColValue. Он должен быть в нашем случае символьный - VARCHAR2 и тогда мы делаем запрос с помощью преобразования типов. Я изменил тип колонки ColValue на VARCHAR2(100), дополнил Ваш пример следующими тестовыми данными Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. и вот Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. TO_DATE сделано только для демонстрации явного преобразования типов. В случае можно конечно проверять дату просто как строку ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 11:35 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
softwarer БредТолько как-то грустно, что даже не стремитесь к пониманию предмета Вашего труда. Здравствуйте, Андрей Леонидович. Ну не ерничайте, Виталий Алексеевич. Прокололись на элементарном непонимании логического уровня, и опять завели песню о чале. Я, как бы Вам этого не хотелось (не совсем, правда, понятно для чего этого так хочется), - не он. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 17:27 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Выбегалло Bogdanov Andrey БредА я просто сравниваю, потому что раздел так называется. Я тоже не ругаю и не хвалю, а привожу результат. Еще раз: у этих колонок могут быть свои ограничения целостности, имена (смысл). Именно Ваш способ и делает тест бессмысленным. Результат Oracle: 1.11 Гб. Я его не ругаю, и не хвалю. Мне как раз кажется, что ваше сравнение совершенно бессмысленно. Вы взяли некий объект в Oracle и некий объект в Cache почему-то решили, что это однородные объекты и решили сравнить их размер. С таким же успехом можно сказать, что у Эйфелевой башни 300 метров, а у великой китайской стены - 6 миллионов метров (могу ошибиться с цифрами). Это сравнение ни о чем. Вот если вы возьмете некую приклдадную задачу, то можно сравнивать ее реализации. Вы можете сказать, что взяли вот задачу хранения разреженных массивов (осталось только строго формализовать ее) и сравнили. Но заметим, что при этом вы сравнили не СУБД, а две ВАШИХ реализации этой задачи. Как только я предложил другую реализацию вы начали навешивать дополнительные требования и ограничения. Ну дело таки в том, что реализация "разряженных массивов" в Oracle таки хромает. Занимается масса дискового пространства, которое никак не используется. Хуже того - при выборке приходится все это пустое место считывать с диска и кидать в память, при записи - сливать на диск. Имеете что возразить ? При прочих равных, СУБД с более компактным хранением данных имеет преимущество в скорости выполнения запросов. Не говоря уже о стоимости дисков. Проблема коллеги ЧАЛа в том, что он свято убежден в порочности реляционной ИДЕИ. Вот тут-то Sybase IQ и вставляет ему перо в ж... в одно место. Оказывается, можно хранить "разряженные массивы" экономно - и при этом оставаться реляционной СУБД. Все зависит от внутренней реализации. Пусть чал летит себе с Вашим пером в ж... Но если реляционные ИДЕЯ (С) порочна, то как ее может спасти "экономное хранение разреженных массивов" ??? Кстати, перечитал высказавания чала (ну может не все), и не нашел ничего про "разреженные массивы", которые невозможно реализовать в рамках "реляционной идеи". После Ваших пламенных и весьма нервных выступлений я уже начал подумывать о том, что не все в порядке с реляционной ИДЕЕЙ (С). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 17:37 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Выбегалло Мне как-то глубоко покласть на ваше мнение о моей (без)грамотности, удивляет только, с какого перепугу вы решили, что оракловские расширения должны быть известны разработчикам других платформ. зашибись позиция, давайте теперь всех заставим ориентироватся на субд которые сумарно занимают 2% рынка :) аналитические функции прописаны в стандарте ANSI SQL и поддерживаются любой нормальной субд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 17:46 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Bogdanov Andrey Выбегаллоничего специфически ораклового в задаче нет, и решается она вполне замечательно средствами стандартного SQL , причем двумя вариантами - с JOIN и с GROUP BY. Не знаю что лично вы обсуждали, а я обсуждал недостатки данной модели, которые на всех СУБД одинаковы - непрозрачность запросов для разработчиков и для оптимизатора. Первую проблему вы прекрасно проиллюстрировали на собственном примере. И это в самом упрощенном варианте. Вы попробуйте написать селект, использующий разные типы данных. Не знаю о каких модели вы говорите. Бред в качестве недостатков реляционных СУБД (точнее в качестве примущества cache над реляционными СУБД) назвал неумение ими компактно хранить разреженные массивы. И предложил некий тест, который по его мнению, показывал это неумение. Я своим примером показал, что вопрос компактного хранения - это исключительно вопрос умения спроектировать базу данных. И на oracle "бредовский тест" может быть реализован ровно с теми же параметрами по занимаемому объему, что и на cache. Вы же почему-то в ответ на это решили обсуждать недостатки какой-то там модели. И при этом, по-всей видимости, занесли меня в сторонники этой самой модели. Давайте отделим мух от котлет. Если вам интересно обсуждать некую модель - пожалуйста, но вряд ли я буду вашим оппонентом. Не вводите людей в заблуждение. "Бредовский тест" на Oracle дает 1.11 Гб. Поэтому, наверное, Вы заменили его собственным тестом, умышленно изменив логическую модель. Вы использовали модель, о которой я сказал еще до Вашего сообщения, и которую можно иногда ВЫНУЖДЕННО использовать, получая очень неудобную для прямых запросов структуру. Хотя бы привели пример, когда структуру из Вашего теста УДОБНО И ПРАВИЛЬНО использовать, заменяя ей нормальную структуру данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 17:47 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
SergSuper pavelvp Если Вы напряжёте свою память, Андрей Леонидович, то наверняка вспомните... ЧАЛ из Латвии писал, а этот IP московский Да и стилистика немного другая. Я всё-таки склоняюсь что не онпростите меня люди, был не прав, всё-таки это он ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 18:10 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
SergSuper пишет: > ЧАЛ из Латвии писал, а этот IP московский > Да и стилистика немного другая. Я всё-таки склоняюсь что не он > > простите меня люди, был не прав, всё-таки это он Дайте пож. ссылку на Чала. На настоящего. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 18:43 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Привет, SergSuper! Ты пишешь: SergSuperS> простите меня люди, был не прав, всё-таки это оноб чем я и говорил... -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 19:01 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Yo.! Выбегалло Мне как-то глубоко покласть на ваше мнение о моей (без)грамотности, удивляет только, с какого перепугу вы решили, что оракловские расширения должны быть известны разработчикам других платформ. зашибись позиция, давайте теперь всех заставим ориентироватся на субд которые сумарно занимают 2% рынка :) аналитические функции прописаны в стандарте ANSI SQL и поддерживаются любой нормальной субд. Да вы наперсточник, батенька. 1. DECODE - в стандарте не прописано. 2. Oracle не занимает 98% рынка. 3. С какой стати DECODE должно быть известно разработчикам других платформ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 19:09 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
MasterZiv SergSuper пишет: > ЧАЛ из Латвии писал, а этот IP московский > Да и стилистика немного другая. Я всё-таки склоняюсь что не он > > простите меня люди, был не прав, всё-таки это он Дайте пож. ссылку на Чала. На настоящего. Posted via ActualForum NNTP Server 1.4 Вот тут вот самый классический ЧАЛ, тема почти умирала и 14-й странице он появляется вот тут еще есть ( но сначала всё по первой ссылке прочитайте ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 19:09 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
dmidek Выбегалло Вы попробуйте написать селект, использующий разные типы данных. Но проблема же здесь в этом случае не в селекте, а в выборе изначально неверного типа для ColValue. Он должен быть в нашем случае символьный - VARCHAR2 и тогда мы делаем запрос с помощью преобразования типов. Я изменил тип колонки ColValue на VARCHAR2(100), дополнил Ваш пример следующими тестовыми данными Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. и вот Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. TO_DATE сделано только для демонстрации явного преобразования типов. В случае можно конечно проверять дату просто как строку ... Мало того, что разработчик вместо имен колонок должен использовать их номера - так ему еще и помнить их типы требуется. Зашибись простота. Кстати, подумал я про сворачивание этого всего полета архитекторной мысли во view для нормального использования - тоже проблемы видны. Много дурной работы серверу придется делать, если в таблице, скажем, 30 колонок, а интересуют всего 2-3-5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 19:18 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Выбегалло dmidek Выбегалло Вы попробуйте написать селект, использующий разные типы данных. Но проблема же здесь в этом случае не в селекте, а в выборе изначально неверного типа для ColValue. Он должен быть в нашем случае символьный - VARCHAR2 и тогда мы делаем запрос с помощью преобразования типов. Я изменил тип колонки ColValue на VARCHAR2(100), дополнил Ваш пример следующими тестовыми данными Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. и вот Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. TO_DATE сделано только для демонстрации явного преобразования типов. В случае можно конечно проверять дату просто как строку ... Мало того, что разработчик вместо имен колонок должен использовать их номера - так ему еще и помнить их типы требуется. Зашибись простота. Кстати, подумал я про сворачивание этого всего полета архитекторной мысли во view для нормального использования - тоже проблемы видны. Много дурной работы серверу придется делать, если в таблице, скажем, 30 колонок, а интересуют всего 2-3-5. Почему он должен помнить номера ? Мы можем если хотим ввести колонку ColName и работать с ней точно так же вместо ColId. Вы стучитесь в открытые двери . Конечно ни один нормальный разработчик не будет хранить данные в такой структуре . Конечно, это неудобно. Вы предложили решить эту задачу в SQL - вот решение. Теперь Вы говорите, что оно сложно выглядит... Повторюсь - это частный случай задачи транспонирования строк в столбцы, довольно популярной при развертке таблицы по значениям и даже располагающейся в FAQ Oracle на сайте (пример разбивки данных по месяцам) Она на мой взгляд не является сложной. Я не вижу в ней технических сложностей. Только некоторая точность и аккуратность. Но естественно в своей системе мне и в страшном сне не приснилось бы хранить данные в таком виде. К чему ? Мне задача была интересна as is , именно как задача на написание запроса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 19:28 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
Выбегалло Да вы наперсточник, батенька. 1. DECODE - в стандарте не прописано. так кто говоришь наперсточник ? :) Выбегалло это на каком диалекте ? Ни Informix, ни Sybase IQ не понимают "select over", "partition by". Нельзя ли ограничиться стандартом ? Выбегалло 3. С какой стати DECODE должно быть известно разработчикам других платформ ? а с какими субд вы имели дело ? DECODE есть и в db2 и в Informix , есть в клонах Postgres (Enterpisedb), наверника в mysql maxdb ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 19:36 |
|
||
|
Разработка СУБД
|
|||
|---|---|---|---|
|
#18+
SergSuper пишет: > Вот тут вот </topic/9021> > самый классический ЧАЛ, тема почти умирала и 14-й странице он появляется Даа, классно ! Супермегаотжиг кашесрач на 89 страницах ! Это ж монументальное полотно просто получилось ! >вот тут > </topic/282117&pg=7#2591611> > еще есть ( но сначала всё по первой ссылке прочитайте ) Надеюсь это была шутка... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2007, 19:40 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=34691353&tid=1553279]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 350ms |

| 0 / 0 |
