powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Почему join синтаксис такой не популярный у ораклоидов?
16 сообщений из 66, страница 3 из 3
Почему join синтаксис такой не популярный у ораклоидов?
    #33582963
Sergey M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, все-таки синтаксис (+), имхо, намного лучше т.к. лаконичнее.
вот напирмер, такой запросец

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
/* Formatted on 2006/03/06 08:52 (Formatter Plus v4.8.0) */
SELECT VS.sid,
       VS.ownerid,
       VS.osuser,
       VRS.waits,
       VRS.writes,
       VRN.name
  FROM v$Session VS,
       v$Transaction VT,
       v$Rollstat VRS,
       v$RollName VRN
 where VS.Saddr  = VT.Ses_addr(+)
   and VT.XidUsn = VRS.usn(+)
   and VRS.usn   = VRN.Usn(+)

Но, если написать используя стандартный синтаксис Join-а такая фиготень
получится чувствую... А так - коротко и ясно .
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #33583269
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey M
Но, если написать используя стандартный синтаксис Join-а такая фиготень
получится чувствую... А так - коротко и ясно .
А вот такое если в старом синтаксисе,
"такая фиготень получится чувствую... А так - коротко и ясно"
Код: plaintext
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.
30.
31.
32.
33.
34.
35.
36.
SQL> select * from tt1;

      ID1 NAME1
--------- ----------
         1  ooooo
         2  ddddd
         3  ttttt

SQL> select * from tt2;

      ID2 NAME2
--------- ----------
         2  DDDDD
         3  TTTTT
         4  CCCCC

SQL> select * from tt3;

      ID3 NAME3
--------- ----------
         3  тттттт
         4  ччччч
         5  ппппп
select * from
tt1 full outer join tt2 on id1=id2
    full outer join tt3 on id1=id3 or id2=id3
/
SQL> /

      ID1 NAME1            ID2 NAME2            ID3 NAME3
--------- ---------- --------- ---------- --------- ----------
         2  ddddd               2  DDDDD
         3  ttttt               3  TTTTT               3  тттттт
         1  ooooo
                              4  CCCCC               4  ччччч
                                                   5  ппппп

......
stax
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #33583281
KOHb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax.
Но, если написать используя стандартный синтаксис Join-а такая фиготень
получится чувствую... А так - коротко и ясно .
А вот такое если в старом синтаксисе,
"такая фиготень получится чувствую... А так - коротко и ясно"
[/quot]
full outer join фпорядке исключения мы признаем
а все остальные джоины - строго нахЪ
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #33583492
Stax.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KOHbfull outer join фпорядке исключения мы признаем
а все остальные джоины - строго нахЪ
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select * from 
 tt1 left outer join tt2 on id1=id2
     left outer join tt3 on id1=id3
/
SQL> /

      ID1 NAME1            ID2 NAME2            ID3 NAME3
--------- ---------- --------- ---------- --------- ----------
         3  ttttt               3  TTTTT               3  тттттт
         1  ooooo
         2  ddddd               2  DDDDD
....
stax
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #33616327
Ди_ма
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select t1.t,t2.t,t3.r,t2.d,t3.d
from t1
left join t2 on t1.r=t2.r and t2.d=
                                 (select max(tt.d) from t2 tt
                                  where tt.dd=
                                   (select max(ttt.dd)
                                   from t2 ttt 
                                   where ttt.dd<=параметр))
inner join t3 on t1.r=t3.r and t3.d=
                                 (select max(tt.d) from t3 tt
                                  where tt.dd=
                                   (select max(ttt.dd)
                                   from t3 ttt 
                                   where ttt.dd<=параметр))
where t2.d<t3.d
При выполнении запроса без условия where t2.d<t3.d , допустим , выводится
такая запись
t1.t t2.t t3.r t2.d t3.d
12 100 250 01.08.1998 01.05.1997
При применении условия
t1.t t2.t t3.r t2.d t3.d
12 100 250 01.05.1997
Хотя , насколько я понимаю, запись должна была отфильтроваться условием where t2.d<t3.d
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #33617626
Nick-SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мои 5 копеек:
Несколько проще написать код для динамической генерации запросов, если список таблиц тоже может меняться в зависимости от параметров, не используя join.
Думаю, не так уж и важно, какой синтаксис использовать, главное, всех девелоперов в конторе заставить писать единообразно.
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #33638603
Nagel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Scott Tiger...Короче, ANSI-синтаксис маст дай ...
(+) 1
Нарвался: через left outer join на одну из таблиц шел TABLE ACCESS FULL вместо TABLE ACCESS BY INDEX ROWID. Никакими хинтами отбить не удалось. Через (+) все замечательно.
Раньше работало хорошо, планы поползли после небольших переделок.
Исправляюсь....
Зарекся....
ANSI-синтаксис ффтоппкку
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #33638789
Alex Roudnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AI
2. Что касаемо любимого многими natural join, то он скрывает имена колонок, что приводит к потерям времени на поиск причины, почему join не работает, а потом выясняется, что в обеих таблицах есть еще одноименные колонки comments, status и еще какие-нибудь, по которым этот идиотский natural join пытается сделать связку. То есть в нормально спроектированной системе natural join практически нельзя использовать.

.

Я бы сказал, что все может быть гораздо веселее, если один автор использует такое, а другой полгода спустя добавит поле comment во вторую табличку. Догадаться, что безобидное добавление поля может что то сломать, не очень сложно (достаточно написать в select колонку без имени таблички, или еще лучше - в том же php выборки из строки по курсору идут по имени колонки, и невозможно выбрать если выдалось два comment), но все равно будет весело.
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #33638891
Sergey M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Roudnev AI
2. Что касаемо любимого многими natural join, то он скрывает имена колонок, что приводит к потерям времени на поиск причины, почему join не работает, а потом выясняется, что в обеих таблицах есть еще одноименные колонки comments, status и еще какие-нибудь, по которым этот идиотский natural join пытается сделать связку. То есть в нормально спроектированной системе natural join практически нельзя использовать.

.

Я бы сказал, что все может быть гораздо веселее, если один автор использует такое, а другой полгода спустя добавит поле comment во вторую табличку. Догадаться, что безобидное добавление поля может что то сломать, не очень сложно (достаточно написать в select колонку без имени таблички, или еще лучше - в том же php выборки из строки по курсору идут по имени колонки, и невозможно выбрать если выдалось два comment), но все равно будет весело.
Если простое добавление колонки приводит к неработоспособности системы это говорит лишь о том система спроектирована (или реализована) неверно (слово неверно не подходит, конечно, правильнее сказать не вполне грамотно). Не так сложно в процессе проектирования писать код таким образом что он не будет ломаться изза добавления новых колонок. Для этого достаточно придерживаться некоторых правил и проблем подобного рода не будет. Но как минимум:
Код: plaintext
1.
2.
3.
4.
1. В списке полей Select всегда указывать имя таблицы/алиас
2. В списке полей Select всегда явно перечислять все нужные поля (не писать a.*
3. Не использовать Natural Join для соединения таблиц
4. Осторожно использовать %rowtype
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Почему join синтаксис такой не популярный у ораклоидов?
    #40009192
shplace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hell
Sash*наезжают типа пиши объединения через запятую. Спрашиваю почему? - так же удобнее - отвечают мол стандарт такой.

а нафига оно мне так??

SQL Navigator тоже вот через запятую генерит



Не было раньше join ов, потом они работали немного глючновато, вот и предубеждения.

А в каком году появился join?
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #40009221
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shplace
А в каком году появился join?
в 9i
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #40009307
Melkomyagkii_newbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз апнули, пролистал по диагонали - вроде еще не упоминали, что с анси синтаксисом порой сложней хинтовать становится(он под капотом в нативный трансформируется перед построением плана) https://jonathanlewis.wordpress.com/2010/12/03/ansi-argh/
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #40009311
Фотография Валерий Юринский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hell
"The CBO without stats is like a morning without coffee." T.Kyte
Неудачный пример.

То же самое, если бы он звучал так:

"The CBO without stats is like a morning without vodka ."
или так:
"The CBO without stats is like a morning without beer ."
или так:
"The CBO without stats is like a morning without tee ."

Хотел сказать об этом Тому в 2015, когда он выступал на конференции.
Но он выглядел настолько усталым и равноудаленным от всего, что я этого делать не стал.
И как раз в тот же год своего 5--ти летия Кайт отошел от активной деятельности.

Я не пью кофе по утрам и прекрасно себя при этом чувствую.
Водку и пиво по утрам я тоже не пью. Пью воду и чай :-)

Наверное, вот такой вариант был бы точнее:
"The CBO without stats is like a morning without water ."
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #40009318
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валерий Юринский,

Отвечать на комменты 2006 года, наверное, уже не так актуально
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #40009377
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уже не так актуально

"Не убий", "не укради", "не используй анси".

Кажется, этим советам уже более 1000 лет. Не уверен.
...
Рейтинг: 0 / 0
Почему join синтаксис такой не популярный у ораклоидов?
    #40009554
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
dmdmdm,

Уже много воды утекло. С тех пор(ещё до full outer join и partitioned join) оракл прекратил развивать native синтаксис, в то время как активно продолжают развивать ansi
...
Рейтинг: 0 / 0
16 сообщений из 66, страница 3 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Почему join синтаксис такой не популярный у ораклоидов?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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