Переделать запрос с INNER JOIN, где есть записи NULL

f50
Дата: 17.06.2011 10:04:18
Здравствуйте! Проблема возможно не сложная... в ID поле встречается запись NULL, следовательно строка вообще не выводится. Хотелось бы сделать вывод "пустышки". Сделать подзапрос из основного запроса - могу, но может без подзапроса можно обойтись? и обойтись без UNION ALL, где сначала кажем без null, потом с null...

DECLARE @t1 table (id1 int, txt10 nvarchar(25), txt11 nvarchar(25))
DECLARE @t2 table (id2 int, txt20 nvarchar(25), txt21 nvarchar(25))
DECLARE @t table (id1 int, id2 int)

INSERT INTO @t1 VALUES (1, 'Хлеб', 'Примечание хлеб')
INSERT INTO @t1 VALUES (2, 'Молоко', 'Примечание молоко')
INSERT INTO @t1 VALUES (3, 'Крупа', 'Примечание крупа')

INSERT INTO @t2 VALUES (1, 'Село', 'Примечание село')
INSERT INTO @t2 VALUES (2, 'Деревня', 'Примечание деревня')
INSERT INTO @t2 VALUES (3, 'Город', 'Примечание город')

INSERT INTO @t VALUES (1,1)
INSERT INTO @t VALUES (1,3)
INSERT INTO @t VALUES (2,3)
INSERT INTO @t VALUES (3,3)
INSERT INTO @t VALUES (3,2)
INSERT INTO @t VALUES (2,null) --эта строка не отображается
INSERT INTO @t VALUES (null,3) --эта строка не отображается

--SELECT * FROM @t1
--SELECT * FROM @t2
--SELECT * FROM @t

--запрос возвращает 5 строк, надо 7
SELECT t1.txt10, t1.txt11, t2.txt20, t2.txt21
FROM @t t
INNER JOIN @t1 t1 ON t1.id1 = t.id1
INNER JOIN @t2 t2 ON t2.id2 = t.id2
iap
Дата: 17.06.2011 10:11:24
f50
Здравствуйте! Проблема возможно не сложная... в ID поле встречается запись NULL, следовательно строка вообще не выводится. Хотелось бы сделать вывод "пустышки". Сделать подзапрос из основного запроса - могу, но может без подзапроса можно обойтись? и обойтись без UNION ALL, где сначала кажем без null, потом с null...

DECLARE @t1 table (id1 int, txt10 nvarchar(25), txt11 nvarchar(25))
DECLARE @t2 table (id2 int, txt20 nvarchar(25), txt21 nvarchar(25))
DECLARE @t table (id1 int, id2 int)

INSERT INTO @t1 VALUES (1, 'Хлеб', 'Примечание хлеб')
INSERT INTO @t1 VALUES (2, 'Молоко', 'Примечание молоко')
INSERT INTO @t1 VALUES (3, 'Крупа', 'Примечание крупа')

INSERT INTO @t2 VALUES (1, 'Село', 'Примечание село')
INSERT INTO @t2 VALUES (2, 'Деревня', 'Примечание деревня')
INSERT INTO @t2 VALUES (3, 'Город', 'Примечание город')

INSERT INTO @t VALUES (1,1)
INSERT INTO @t VALUES (1,3)
INSERT INTO @t VALUES (2,3)
INSERT INTO @t VALUES (3,3)
INSERT INTO @t VALUES (3,2)
INSERT INTO @t VALUES (2,null) --эта строка не отображается
INSERT INTO @t VALUES (null,3) --эта строка не отображается

--SELECT * FROM @t1
--SELECT * FROM @t2
--SELECT * FROM @t

--запрос возвращает 5 строк, надо 7
SELECT t1.txt10, t1.txt11, t2.txt20, t2.txt21
FROM @t t
LEFT JOIN @t1 t1 ON t1.id1 = t.id1
LEFT JOIN @t2 t2 ON t2.id2 = t.id2
f50
Дата: 17.06.2011 11:01:00
iap, огромное спасибо!!!