powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как написать join?
4 сообщений из 4, страница 1 из 1
Как написать join?
    #32037724
Alex_Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть три одинаковые по структуре таблицы
составной ключ ID_NAME, IDPUBLISH
констрейн на уникальность ID_NAME, iPosPUBLISH


{src}

t1
ID_NAME IDPUBLISH cISBN iPosPUBLISH
----------- ----------- --------------- -----------
75805 6197 5-271-01071-6 1
75805 56327 5-17-003775-9 3
75805 57352 5-236-00821-2 2

t2
id_name idpublish cisbn ipospublish
----------- ----------- --------------- -----------
75805 57352 5-236-00821-2 1
75805 100384 5-271-01071-6 2
75805 200383 5-17-003775-9 3

t3
ID_NAME IDPUBLISH cISBN iPosPUBLISH
----------- ----------- --------------- -----------
75805 6197 5-271-01071-6 1
75805 56327 5-17-003775-9 3

{/src}


Не получается получить на выходе

{src}

id_name t1.idpublish t2.idpublish t3.idpublish

75805 6197 null 6197
75805 56327 null 56327
75805 57352 57352 null
75805 null 100384 null
75805 null 200383 nul




{/src}
...
Рейтинг: 0 / 0
Как написать join?
    #32037737
Atikin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Покажи запрос который пишеь??
...
Рейтинг: 0 / 0
Как написать join?
    #32037747
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что-ли ?
Код: 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.
declare @t1 table(ID_NAME int, IDPUBLISH int, cISBN varchar( 20 ), iPosPUBLISH int)

insert @t1 values( 75805 ,  6197 , '5-271-01071-6',  1  )
insert @t1 values( 75805 ,  56327 , '5-17-003775-9',  3  )
insert @t1 values( 75805 ,  57352 , '5-236-00821-2',  2  )

declare @t2 table(id_name int, idpublish int, cisbn varchar( 20 ), ipospublish  int)
insert @t2 values( 75805 ,  57352 , '5-236-00821-2',  1  )
insert @t2 values( 75805 ,  100384 , '5-271-01071-6',  2  )
insert @t2 values( 75805 ,  200383 , '5-17-003775-9',  3  )

declare @t3 table(ID_NAME int, IDPUBLISH int, cISBN varchar( 20 ), iPosPUBLISH int)
insert @t3 values( 75805 ,  6197 , '5-271-01071-6',  1  )
insert @t3 values( 75805 ,  56327 , '5-17-003775-9',  3 )

select a.id_name, c.idpublish as [t1.idpublish] ,
NULL as [t2.idpublish],
a.idpublish as [t3.idpublish]  
from @t3 a
inner join @t1 c on c.id_name = a.id_name and c.idpublish = a.idpublish
union all
select a.id_name, b.idpublish as [t1.idpublish],
a.idpublish as [t2.idpublish] ,
NULL as [t3.idpublish]  
from @t2 a
left outer join @t1 b on b.id_name = a.id_name and b.idpublish = a.idpublish
...
Рейтинг: 0 / 0
Как написать join?
    #32037891
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то что нуно.....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SELECT     t_1.IDPUBLISH AS t1idpublish, t_2.IDPUBLISH AS t2idpublish, t_3.IDPUBLISH AS t3idpublish
FROM         (SELECT DISTINCT t1.IDPUBLISH AS IDPUBLISH
                       FROM          t1
	       WHERE      ID_NAME =  75805 
                       UNION
                       SELECT DISTINCT t2.IDPUBLISH AS IDPUBLISH
                       FROM         t2
	       WHERE      ID_NAME =  75805 
                       UNION
                       SELECT DISTINCT t3.IDPUBLISH AS IDPUBLISH
                       FROM         t3
                       WHERE      ID_NAME =  75805 ) allidpublish LEFT OUTER JOIN
                          (SELECT     ID_NAME, IDPUBLISH
                            FROM          t3
                            WHERE      ID_NAME =  75805 ) t_3 ON allidpublish.IDPUBLISH = t_3.IDPUBLISH LEFT OUTER JOIN
                          (SELECT     ID_NAME, IDPUBLISH
                            FROM          t2
                            WHERE      ID_NAME =  75805 ) t_2 ON allidpublish.IDPUBLISH = t_2.IDPUBLISH LEFT OUTER JOIN
                          (SELECT     ID_NAME, IDPUBLISH
                            FROM          t1
                            WHERE      ID_NAME =  75805 ) t_1 ON allidpublish.IDPUBLISH = t_1.IDPUBLISH
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как написать join?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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