Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Интересный стиль написания запроса / 25 сообщений из 25, страница 1 из 1
29.01.2020, 15:10
    #39919979
Anton_Demin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Добрый день.

У нас на проекте аналитик пишет sql-запросы очень интересной структуры:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
with main_tbl as (
select 1 id , 'aaa' name from dual union
select 2 id , 'sss' name from dual union
select 3 id , 'ddd' name from dual union
select 4 id , 'fff' name from dual union
select 5 id , 'ggg' name from dual union
select 6 id , 'hhh' name from dual),

old_tbl as (
select 1 id, 'actual' status from dual union
select 2 id, 'old ((' status from dual union
select 3 id, 'actual' status from dual),

very_old_tbl as (
select 1 id from dual union
select 2 id from dual union
select 3 id from dual union
select 4 id from dual)

select t.id, t.name 
 from main_tbl t
 join (
         (select * from very_old_tbl) vo
         join
         (select * from old_tbl) o
         on vo.id = o.id
      ) 
       on vo.id = t.id
      and o.status = 'actual'



Кто нибудь знает, как называется такой укуренный стиль sql по науке? И где можно почитать в документации об этом?
...
Рейтинг: 0 / 0
29.01.2020, 15:23
    #39919996
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Anton_Demin,

Основной запрос свидетельствует о любви к inline view s.

Если много чего написано в with - это свидетельствует о любви к факторингу (декомпозиции) [под]запросов.
Факторинг, в частности, призван реализовывать логику поэтапно и минимизировать вложенность (которая с другой стороны излишне максимизирована в основном запросе приведенного примера).

Слова для поиска - sub query factoring (от глагола factor - to decompose code to reveal the structure of the problem).
...
Рейтинг: 0 / 0
29.01.2020, 15:30
    #39920001
Anton_Demin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Кобанчег,

меня удивили не with, а это
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select t.id, t.name 
 from main_tbl t
 join (
         (select * from very_old_tbl) vo
         join
         (select * from old_tbl) o
         on vo.id = o.id
      ) 
       on vo.id = t.id
      and o.status = 'actual'
...
Рейтинг: 0 / 0
29.01.2020, 15:32
    #39920007
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Кобанчег
(от глагола factor - to decompose code to reveal the structure of the problem)
Осмелюсь выразить сомнение.
Под словом "Factoring" Oracle здесь скорее имеет в виду "формирование", а не "разложение"
...
Рейтинг: 0 / 0
29.01.2020, 15:33
    #39920009
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Anton_Demin
как называется такой укуренный стиль sql по науке?
Главное что надо знать по науке, что приведенный запрос преобразуется Ораклом в
Код: plsql
1.
2.
3.
4.
5.
select t.id id, t.name name
  from main_tbl t, very_old_tbl, old_tbl
 where very_old_tbl.id = t.id
   and old_tbl.status = 'actual'
   and very_old_tbl.id = old_tbl.id

И в итоге не важно сколько inline views использовал аналитик.
Если ему так легче "читать" логику запроса и он не создает хранимый код, то какое тебе дело до его стиля?

PS. Также полезно почитать в документации про join_clause.
...
Рейтинг: 0 / 0
29.01.2020, 15:36
    #39920013
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
--Eugene--
Кобанчег
(от глагола factor - to decompose code to reveal the structure of the problem)
Осмелюсь выразить сомнение.
Под словом "Factoring" Oracle здесь скорее имеет в виду "формирование", а не "разложение"
"формирование" - это откуда то взял ты.
А Оракл понимает под английскими словами то, что они означают в словаре.
...
Рейтинг: 0 / 0
29.01.2020, 15:39
    #39920019
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Кобанчег
"формирование" - это откуда то взял ты.
А Оракл понимает под английскими словами то, что они означают в словаре.
factory
...
Рейтинг: 0 / 0
29.01.2020, 15:43
    #39920022
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Anton_Demin
меня удивили не with, а это
Если лень читать доку, то можешь глянуть в книге фотошопа .
В конце раздела "Наглядность и читаемость" - страница 29.
...
Рейтинг: 0 / 0
29.01.2020, 15:43
    #39920023
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
--Eugene--
Кобанчег
"формирование" - это откуда то взял ты.
А Оракл понимает под английскими словами то, что они означают в словаре.
factory

Мсье полагает, что factoring и factory - синонимы?
...
Рейтинг: 0 / 0
29.01.2020, 15:48
    #39920028
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
--Eugene--
Кобанчег
"формирование" - это откуда то взял ты.
А Оракл понимает под английскими словами то, что они означают в словаре.
factory
Ты реально прикалываешься или просто тролль?

При чем здесь фабрика к глаголу фактор, а?
Лишняя буква Y не смущает совсем?
В слове "хай" если заменить а на у тоже смысл несколько поменяется.

Если иногда приходится общатся с носителями языка, то можно услашыть что-то в духе:
I would like to factor this logic out from the main query.
...
Рейтинг: 0 / 0
29.01.2020, 15:49
    #39920031
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
andrey_anonymous
Мсье полагает, что factoring и factory - синонимы?
Скорее, однокоренные
...
Рейтинг: 0 / 0
29.01.2020, 15:54
    #39920034
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
--Eugene--
andrey_anonymous
Мсье полагает, что factoring и factory - синонимы?
Скорее, однокоренные

Ссылку на словарь однокоренных ангельских не представите?
...
Рейтинг: 0 / 0
29.01.2020, 15:59
    #39920038
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
--Eugene--
andrey_anonymous
Мсье полагает, что factoring и factory - синонимы?
Скорее, однокоренные
Тут только остаётся привести тебе пример.

Вот есть в англ такое слово - sill. Означает подоконник (порог, нижняя часть рамы).
А еще есть silly. Означает дурачок, глупый.

Так вот: don't be silly, Eugene!

И я сейчас не про подоконник.
...
Рейтинг: 0 / 0
29.01.2020, 16:03
    #39920042
iOracleDev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Anton_Demin,

Лишние select * from some_table не прибавляют читабельности и усложняют запрос,
единственный плюс для сильно ленивого человека, это то что можно выделить мышкой и запустить.
...
Рейтинг: 0 / 0
29.01.2020, 16:05
    #39920044
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
iOracleDev
Anton_Demin,

Лишние select * from some_table не прибавляют читабельности и усложняют запрос,
единственный плюс для сильно ленивого человека, это то что можно выделить мышкой и запустить.
Его смутило не это, а то, что можно так писать.
Код: plsql
1.
2.
3.
4.
5.
6.
select t.id, t.name
  from main_tbl t
  join very_old_tbl vo
  join old_tbl o
    on vo.id = o.id
    on vo.id = t.id and o.status = 'actual'
...
Рейтинг: 0 / 0
29.01.2020, 16:08
    #39920047
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
andrey_anonymous
Ссылку на словарь однокоренных ангельских не представите?
Я лишь высказал сомнение в наивном чтении словаря, рассчитанного на масс-маркет.
Это лишь мое мнение, полагающееся на здравый смысл.
Ведь, в частности, понятие "recursive subquery factoring" означает не "разбиение", а скорее "создание".
Могу ошибаться :)
...
Рейтинг: 0 / 0
29.01.2020, 16:14
    #39920051
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Кобанчег,

Код: plsql
1.
2.
3.
4.
5.
6.
select t.id, t.name
  from main_tbl t
     , very_old_tbl vo
     , old_tbl o
where o.status = 'actual'
  and t.id = decode(t.id,vo.id,o.id)
...
Рейтинг: 0 / 0
29.01.2020, 16:22
    #39920058
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
--Eugene--
andrey_anonymous
Ссылку на словарь однокоренных ангельских не представите?
Я лишь высказал сомнение в наивном чтении словаря, рассчитанного на масс-маркет.
Это лишь мое мнение, полагающееся на здравый смысл.
Ведь, в частности, понятие "recursive subquery factoring" означает не "разбиение", а скорее "создание".
Могу ошибаться :)
Твои сомнения обоснованы только твоими фантазиями и крайне низким уровнем владения англ.
...
Рейтинг: 0 / 0
29.01.2020, 16:23
    #39920059
Кобанчег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Dshedoo
Кобанчег,

Код: plsql
1.
2.
3.
4.
5.
6.
select t.id, t.name
  from main_tbl t
     , very_old_tbl vo
     , old_tbl o
where o.status = 'actual'
  and t.id = decode(t.id,vo.id,o.id)

Ты ко мне обращаешься чтоб я прокоментировал эту гадость или по каким-то иным причинам?
...
Рейтинг: 0 / 0
30.01.2020, 05:35
    #39920269
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Anton_Demin
Кто нибудь знает, как называется такой укуренный стиль sql по науке

Это называется copy-paste driven coding и обычно считается чем-то зашкварным.
...
Рейтинг: 0 / 0
30.01.2020, 14:47
    #39920517
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Такой стиль написания обычно свидетельствует об отсутствии понимания преимуществ субд при обработке данных.
Таким образом можно нехило запутать оптимизатор, лишние несколько раз вызывать одни и те же объекты.
Проверено - читабельности никакой нит, после прошествия времени даже создателю тяжелее разобраться в том, что он написал
...
Рейтинг: 0 / 0
30.01.2020, 15:05
    #39920525
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
kaldorey
Проверено - читабельности никакой нит, после прошествия времени даже создателю тяжелее разобраться в том, что он написал
Не надо путать IYHO с ROT.
...
Рейтинг: 0 / 0
30.01.2020, 18:18
    #39920643
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Anton_Demin
Добрый день.

..

Кто нибудь знает, как называется такой укуренный стиль sql по науке? И где можно почитать в документации об этом?


стиль ansi (101% )
...
Рейтинг: 0 / 0
31.01.2020, 08:38
    #39920895
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
Elic,

Да, писал, немного торопясь.
Каждый блок прочитать легко, а вот восстановить картину, почему итоговый набор данных получается именно таким способом, сложно.
Есть ли здесь логика, учитывается ли в этом блоке что-то такое, что нельзя убирать. Когда спрашивал тех, кто так писал, они не могли ответить, над каждым блоком приходилось думать, как над цельным скриптом, потому что в таком написании получался не просто кусок, необходимый для оптимизации, а некая сущность, которая здесь, скорее всего, не должна возникать.
Возможно не видел хорошего применения сего паттерна с точки зрения наглядности.
...
Рейтинг: 0 / 0
31.01.2020, 09:02
    #39920897
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Интересный стиль написания запроса
kaldorey
Возможно не видел хорошего применения сего паттерна с точки зрения наглядности.
И поэтому не обобщай. Задачи разные бывают. А читабельность, прежде всего, зависит от автора. И даже главное не читабельность, а сопровождаемость. "Гении" такой ещё одноразовый говнокод могут соорудить...


P.S. И вообще никакой это ни "паттерн". Просто использование возможностей.
Не нужно поддакивать укуренному ТС в его невежестве.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Интересный стиль написания запроса / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]