powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Связывание таблиц - запятая VS join
3 сообщений из 3, страница 1 из 1
Связывание таблиц - запятая VS join
    #39315557
Ребята приветствую всех!

Периодически встречаю связывания таблиц двумя способами: через запятую и с использованием слова JOIN. Можете объяснить в чем принципиальное отличие ?
Понятно, что в синтаксисе. Но вот с точки зрения постороения, выполнения и оптимизации, какие есть различия?
Если, честно, то мне всегда было удобно связвать таблицы через запятую.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
With Table_1 as
      (select 1 as id1 from Dual 
       union 
       select 2 as id1 from Dual),
     
     Table_2 as
      (select 2 as id2 from Dual 
       union 
       select 3 as id2 from Dual)

--- 1 вариант
select * from Table_1 inner join Table_2
              on Table_1.id1 = Table_2.id2      
--- 2 вариант
select * from Table_1, Table_2
       where Table_1.id1 = Table_2.id2 
    
...
Рейтинг: 0 / 0
Связывание таблиц - запятая VS join
    #39315560
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STFF ANSI vs Oracle синтаксис. ты ж не первый такой...
...
Рейтинг: 0 / 0
Связывание таблиц - запятая VS join
    #39315567
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Студент_Oracle2 Ребята приветствую всех!

Периодически встречаю связывания таблиц двумя способами: через запятую и с использованием слова JOIN. Можете объяснить в чем принципиальное отличие ?
Понятно, что в синтаксисе. Но вот с точки зрения постороения, выполнения и оптимизации, какие есть различия?
Если, честно, то мне всегда было удобно связвать таблицы через запятую.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
With Table_1 as
      (select 1 as id1 from Dual 
       union 
       select 2 as id1 from Dual),
     
     Table_2 as
      (select 2 as id2 from Dual 
       union 
       select 3 as id2 from Dual)

--- 1 вариант
select * from Table_1 inner join Table_2
              on Table_1.id1 = Table_2.id2      
--- 2 вариант
select * from Table_1, Table_2
       where Table_1.id1 = Table_2.id2 
    

Принципиальное отличие что ANSI транслируется в native во всех случаях кроме join partition by and full join.
Часто это приводит к созданию inlinve/lateral views.

Если тебе проще использовать native - перепиши следующий запрос (по многим вопросам придет просвевление).
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select fact.*, map.*
  from fact
       join dim_1
          on dim_1.id = fact.dim_1_id
       join dim_n
          on dim_1.dim_n_id = dim_n.id
       left join map
          on fact.type in ('A', 'B', 'C')
         and ((map.category = 'FACT VALUE' and map.value = fact.value)
           or (map.category = 'DETAILED VALUE' and map.value = dim_n.value));



Никогда не приходило в голову почему ни один человек в здравом уме не пишет
Код: plsql
1.
2.
3.
4.
5.
6.
select *
from Table_1
cross join Table_2
...
cross join Table_n
where <каша из предикатов>

вместо join on?

В вообще в поиск. Обсуждалось 100 раз, одним коротким ответом тему не раскроешь.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Связывание таблиц - запятая VS join
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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