Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Естественное соединение двух таблиц по неск столбц, Как соединить? 
V
    Опции темы
NEt_Hunter
Дата 23.11.2010, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 9.10.2006
Где: Германия

Репутация: нет
Всего: нет



Здравствуйте. Даны 2 таблицы А(а,б,в,г) и Б(в,г,д,е) Задача в том чтобы объединить их по естест. соединению.   Хотел спросить у знающих, как  соединить 2 таблицы в каждой из которых по 2 одинаковых столбца? До этого соединял только когда было по 1-му одинаковому столбцу в каждой табл. Просто поставить 2 "on" условия? Если да, то можете примерно объяснить как поля будут соединяться?

Спасибо!!!

PM MAIL ICQ   Вверх
Akina
Дата 23.11.2010, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Код

from A
join B
on ((A.в=В.в) and (А.г=В.г))

собсно... 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 23.11.2010, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(NEt_Hunter @  23.11.2010,  18:04 Найти цитируемый пост)
Задача в том чтобы объединить их по естест. соединению. 

В чем проблема то? Естественное соединение по двум столбцам производится исключительно ровно так же как и по одному.
Код

SQL> with a as (select 1 a,2 b,3 c, 4 d from dual
  2             union all select 7,8,9,10 from dual)
  3       ,b as (select 3 c, 4 d,5 e, 6 f from dual
  4              union all select 9,10,11,12 from dual)
  5  select * from a natural join b
  6  ;
 
         C          D          A          B          E          F
---------- ---------- ---------- ---------- ---------- ----------
         3          4          1          2          5          6
         9         10          7          8         11         12

Цитата(NEt_Hunter @  23.11.2010,  18:04 Найти цитируемый пост)
Просто поставить 2 "on" условия? 

on условия не используются в семантике естественного соединения. В этом и состоит его исключительная особенность. Под "естественностью" подразумевается очевидность критериев объединения наборов данных. Их явное указание - излишне.

Это сообщение отредактировал(а) Zloxa - 23.11.2010, 18:19


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LSD
Дата 24.11.2010, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 1
Всего: 538




M
LSD
Необходимо указывать СУБД(и, желательно, версию), чтоб не были даны ответы, которые для Вашей СУБД будут просто неприменимы.



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Zloxa
Дата 24.11.2010, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



LSD, мне кажется ты тут не совсем прав, лишь частично. Естественные соединения и их синтаксис, на сколько мне известно - стандартизированы, потому о них можно говорить в отвязе от платформы. Другое дело, что не все платформы поддерживают эту часть стандарта. На сколько мне стало известно после беглого просмотра документации natural join реализован не толкьо в оракле, но и в маське и PG. И, совсем третье дело - что полезность этого соединения, для меня лично, весьма условна, думаю, для других, здравомыслящих разработчиков - тоже. Более того, я нахожу этот жойн весьма опасным и недоумеваю, зачем стоило тратить силы на его реализацию.

Однако постановка вопроса ТС заставила меня предположить что его интерес исключительно теоретический и, в результате разъяснений будет не практическая реализация, а зачет по лабе или чтото вроде. Потому такая постановка вопроса, мне кажется имеет место быть.

Это сообщение отредактировал(а) Zloxa - 24.11.2010, 17:51


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
NEt_Hunter
Дата 24.11.2010, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 9.10.2006
Где: Германия

Репутация: нет
Всего: нет



Да, это не для практического применения, а лишь для того чтобы понять наглядно.  Я думал таблица сама автоматом возмет одну из возможных одинаковых колонок. Теперь все ясно. Спасибо большое за разьяснения!!! 


Это сообщение отредактировал(а) NEt_Hunter - 24.11.2010, 21:54
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0618 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.