Do Left или Inner Join зависит от параметра - PullRequest
0 голосов
/ 30 июня 2011

Мне нужно сделать операцию соединения таблиц влево или внутрь, зависит от входного параметра в моей хранимой процедуре. Я знаю, как это сделать очень просто:

if flag = 0
begin 
 select t1.*, t2.* from t1 
 inner join t2 on t2.id=t1.id 
end
else 
begin
 select t1.*, t2.* from t1 
 left join t2 on t2.id=t1.id 
end 

Есть ли еще решение? Спасибо

Ответы [ 3 ]

3 голосов
/ 30 июня 2011

вы можете сделать это, используя только левое соединение, выполнив что-то вроде этого

select t1.*, t2.* from t1 
 left outer join t2 on t2.id=t1.id 
WHERE flag = 1 OR t2.id IS NOT NULL
0 голосов
/ 01 июля 2011
 select t1.*, t2.* 
   from t1 
        inner join t2 on t2.id = t1.id 
  where flag = 0
 UNION
 select t1.*, t2.* 
   from t1 
        left outer join t2 on t2.id = t1.id
  where coalesce(flag, 1) <> 0;
0 голосов
/ 30 июня 2011

Вы не упомянули язык, поэтому может быть что-то вроде этого:

select t1.*, t2.* from t1 
left join t2 on t2.id=t1.id 

if flag = 0
begin 
 where t2.id is not null
end
...