Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 left VS inner join  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
Добрый день!
Есть 2 таблицы : A и B

в таблице А ключевое поле id1,
в таблице B ключевое поле id2.

В таблице А также есть ссылка на id2, причём не в каждой записи (встречается NULL)
В таблице B также есть ссылка на id1, не в каждой записи (встречается NULL), кроме того, могут быть дубликаты.

Хочу соединить две таблицы таким образом, чтобы получить полный набор полей обоих таблиц на основе первой (вторую таблицу полностью выводить не нужно)
Если некой записи первой таблице нет соответствия во второй, то дополнять NULL, как при связке LEFT JOIN ON A.id1 = B.id1.
Получаются дубликаты, а от них хотелось бы избавиться, причём накладывая условие A.id2 = B.id2.
Ваши предложения ?
3 фев 14, 18:31    [15512265]     Ответить | Цитировать Сообщить модератору
 Re: left VS inner join  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
select
 ...
from
 A left join
 B on B.id1 = A.id1
where
 B.id1 is null or
 B.id2 = A.id2
3 фев 14, 19:21    [15512561]     Ответить | Цитировать Сообщить модератору
 Re: left VS inner join  [new]
aleks2
Guest
1. Group by
2. Row_number() over()

можно и еще чего напридумывать.
Было бы желание...
3 фев 14, 19:22    [15512565]     Ответить | Цитировать Сообщить модератору
 Re: left VS inner join  [new]
defragmentator
Member

Откуда:
Сообщений: 20504
ОК, уже разобрался. Спасибо
3 фев 14, 19:47    [15512617]     Ответить | Цитировать Сообщить модератору
 Re: left VS inner join  [new]
Добрый Э - Эх
Guest
defragmentator,

выбирай из дубликатов одну единственную строку любым из перечисленных тут способов...
3 фев 14, 19:47    [15512622]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить