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

Откуда:
Сообщений: 8
Допустим, есть Таблица

| NULL | ЗН1 |
| ЗН1 | ЗН1 |
| ЗН2 | ЗН2 |

и

| ЗН1 |
| ЗН2 |

Можно ли join-ом получить таблицу

| ЗН2 |
26 сен 18, 13:37    [21686674]     Ответить | Цитировать Сообщить модератору
 Re: Соединение таблиц  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
можно... а что джойн в вашем понимании будет делать то ?
26 сен 18, 14:12    [21686756]     Ответить | Цитировать Сообщить модератору
 Re: Соединение таблиц  [new]
court
Member

Откуда:
Сообщений: 2017
trasca,

... a join b on a.xz1=b.xz1 and a.xz2=b.xz2
26 сен 18, 14:13    [21686757]     Ответить | Цитировать Сообщить модератору
 Re: Соединение таблиц  [new]
court
Member

Откуда:
Сообщений: 2017
court
trasca,

... a join b on a.xz1=b.xz1 and a.xz2=b.xz2
сорян, не то :)
26 сен 18, 14:13    [21686758]     Ответить | Цитировать Сообщить модератору
 Re: Соединение таблиц  [new]
court
Member

Откуда:
Сообщений: 2017
это будет считаться join-ом ?
declare @a table (xz1 varchar(5), xz2 varchar(5))
insert into @a values 
(null,'ЗН1')
,('ЗН1','ЗН1')
,('ЗН2','ЗН2')

declare @b table (xz varchar(5))
insert into @b values
('ЗН1')
,('ЗН2')

-- ******************
select b.* 
from
	(select min(isnull(xz1,'')) as xz1, xz2 from @a group by xz2) a
join 
	@b b on a.xz1=b.xz and a.xz2=b.xz
26 сен 18, 14:45    [21686812]     Ответить | Цитировать Сообщить модератору
 Re: Соединение таблиц  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
trasca,

Каков вопрос - таков ответ

-- Спасибо court-у за тестовые данные...
declare @a table (xz1 varchar(5), xz2 varchar(5))
insert into @a values 
(null,'ЗН1')
,('ЗН1','ЗН1')
,('ЗН2','ЗН2')

declare @b table (xz varchar(5))
insert into @b values
('ЗН1')
,('ЗН2')

-- Сам запрос:
select b.xz
  from @a a
  join @b b -- желанный джойн
    on a.xz2 = b.xz
 group by b.xz
having count(1) = 1
   and max(a.xz1)= b.xz
26 сен 18, 17:51    [21687181]     Ответить | Цитировать Сообщить модератору
 Re: Соединение таблиц  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1467
trasca,

а если до агрегатный запросов ещё не дошли и прошли только разные виды джойнов, то вот вам запрос на джойнах:
declare @a table (xz1 varchar(5), xz2 varchar(5))
insert into @a values 
(null,'ЗН1')
,('ЗН1','ЗН1')
,('ЗН2','ЗН2')

declare @b table (xz varchar(5))
insert into @b values
('ЗН1')
,('ЗН2')

select b.xz
  from @b b
  join @a a1
    on a1.xz1 = b.xz
  left join @a a2
    on b.xz = a2.xz2
   and (a2.xz1 != b.xz or a2.xz1 is null)
 where a2.xz2 is null

Единственное, в этом случае не учитываются дубликаты по одновалуйным парам в таблице а, если вы понимаете, о чем я...
26 сен 18, 18:02    [21687210]     Ответить | Цитировать Сообщить модератору
 Re: Соединение таблиц  [new]
trasca
Member

Откуда:
Сообщений: 8
Всем спасибо! Очень познавательно.
27 сен 18, 10:38    [21687831]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить