Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Соединить таблицу с собой [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


Наверх

Титульная страница Поиск, карта сайта Написать письмо