Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Написание SELECT / 3 сообщений из 3, страница 1 из 1
29.03.2001, 10:39
    #32003681
N!ghtmareXXX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание SELECT
ЕСТЬ ТРИ ТАБЛИЦЫ
t1:
id code descr
i1 1 d1
i2 2 d2
i3 3 d3
t2:
id pole1 pole2
ii1 NULL 1500
ii2 i2 3000
ii3 i1 2000
ii4 i1 2000
ii5 i3 2000
t3:
idd docdef def descr
ii1 410 def1 ds1
ii2 410 def2
ii3 410 def3 ..
ii5 410 def4
ip1 430 def5
ip3 430 def6 ds6
Таблица t1 с t2 связана по t1.id-t2.pole1
Таблица t2 с t3 связана по t3.idd-t2.id
выдать результат нужно в виде
t2.id,t2.pole2,t3.def,t3.ds6,t1.descr
в выборку должны попасть записи как с NULL значением t2.pole1
так и не нулевые
Заранее спасибо
...
Рейтинг: 0 / 0
29.03.2001, 11:02
    #32003683
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание SELECT
У меня так получилось
create table #t1([id] char(5), code int, descr char(5))
insert into #t1 values('i1', 1, 'd1')
insert into #t1 values('i2', 2, 'd2')
insert into #t1 values('i3', 3, 'd3')

create table #t2([id] char(5), pole1 char(5), pole2 int)
insert into #t2 values('ii1', NULL, 1500)
insert into #t2 values('ii2', 'i2', 3000)
insert into #t2 values('ii3', 'i1', 2000)
insert into #t2 values('ii4', 'i1', 2000)
insert into #t2 values('ii5', 'i3', 2000)

create table #t3(idd char(5), docdef int, def char(5), descr char(5))
insert into #t3 values('ii1', 410, 'def1', 'ds1')
insert into #t3 values('ii2', 410, 'def2', null)
insert into #t3 values('ii3', 410, 'def3', '..')
insert into #t3 values('ii5', 410, 'def4', null)
insert into #t3 values('ip1', 430, 'def5', null)
insert into #t3 values('ip3', 430, 'def6', 'ds6')


SELECT #t2.[id], #t2.pole2,#t3.def,#t3.descr,#t1.descr
FROM #t2 LEFT OUTER JOIN #t1 ON #t1.[id] = #t2.pole1
INNER JOIN #t3 ON #t3.idd = #t2.id

go
drop table #t1
drop table #t2
drop table #t3
...
Рейтинг: 0 / 0
29.03.2001, 11:38
    #32003689
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Написание SELECT
Ради любопытства: а такой запрос устроит?

SELECT t2.id, t2.pole2,t3.def,t3.descr,t1.descr
FROM #t2 t2, #t1 t1, #t3 t3
where t1.id=t2.pole1 and t3.idd=t2.id
union
SELECT t2.id, t2.pole2,t3.def,t3.descr,null
FROM #t2 t2, #t3 t3
where t2.pole1 is null and t3.idd=t2.id

А вообще задача поставлена несколько некорректно. Есть некое противоречие: с одной стороны должна быть связь по t1.id-t2.pole1, а с другой стороны должна попасть запись t2.pole1 со значением null, хотя соответствующей записи в таблице t1 нет
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Написание SELECT / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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