![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Соединить таблицу с собой [MSSQL]
Vlad Oshin © (2006-12-28 17:46:00)пусть есть
mytable
---------
cl1 | cl2
---------
a | 12
a | 22
b | 32
надо получить
a 12 22
b 32 null
пишу
select
a.cl1, a.cl2, b.cl2
from
mytable a
inner join
mytable b
ON
a.cl1=b.cl1
where
a.cl2<b.cl2
получаю
a 12 22
, что и следовало ожидать
а как сделать, чтоб было
a 12 22
b 32 null
?
можно, конечно, добить таблицу еще одним значением b null для симметрии :), но может подскажете как надо? Если ответ очевиден - не пинайтесь, хотя бы намекните
ЮЮ (2006-12-29 10:34:00) [1]
> Тогда уж Left Outer Join :)))
OUTER при LEFT можно опускать, ибо LEFT - однj из OUTER соединений.
а вот LEFT не опустишь.
Megabyte (2006-12-29 10:10:00) [2]Тогда уж Left Outer Join :)))
ЮЮ (2006-12-29 04:06:00) [3]
> outer join
тогда уж LEFTJOIN
Desdechado (2006-12-28 19:19:00) [4]outerjoin
Ega23 (2006-12-28 19:18:00) [5]
> вот из-за чего
> не знал..
> ни в одном примере не попалось что можно так писать, Множественное
> условие, т.е.
> Обычно напишут inner join бла-бла ON a.qwe=s.qwe
> и все, давай следующий пример, такой же
>
во from выборка готовится, в where полученные данные фильтруются.
Vlad Oshin (2006-12-28 19:11:00) [6]
> inner join mytable b ON a.cl1=b.cl1 and a.cl2 < b.cl2
вот из-за чего
не знал..
ни в одном примере не попалось что можно так писать, Множественное условие, т.е.
Обычно напишут inner join бла-бла ON a.qwe=s.qwe
и все, давай следующий пример, такой же
спасибо еще раз, все получилось :)
Vlad Oshin (2006-12-28 18:35:00) [7]спасибо. мне хоть как лишь бы до пятницы
Пошел переводить на реальные таблы
stone (2006-12-28 18:08:00) [8]Изврат, кончно, но можно так
select a.cl1, a.cl2, b.cl2
from mytable a
inner join mytable b ON a.cl1=b.cl1 and a.cl2 < b.cl2
union all
select a.cl1, a.cl2, null from
(select cl1, count(cl2) as cnt from mytable
group by cl1 having count(cl2) = 1) b
inner join mytable a on a.cl1 = b.cl1