Warunkowe złączenie tabel (inner join tylko w specyficznym przypadku)

0

Witam,

Chciałem zrobić taką rzecz. Powiedzmy, że mamy jakiś parametr i od niego zależy czy połączę 2 tabele inner czy left joinem. Myślałem łączyć się left joinem zawsze i tylko w jakiś przypadku dawać odpowiedni warunek w where (np. coś takiego):

 
SELECT C.CustomerID,V.* FROM Customers C LEFT JOIN Visits V ON C.CustomerID = V.CustomerID
where v.CustomerID is not null

Czyli aktualnie zapytanie jest jakby z inner joinem. Problem w tym, że nie wiem jak zbudować case w where żeby był czasami left join

0

W jakim celu jest Ci to konkretnie potrzebne?
Być może w ogóle źle podchodzisz do problemu.

0

Zawsze można sobie zbudować dynamicznie zapytanie zależnie od przyjętego parametru. Zgaduje jednak, że problem leży od strony aplikacji to znaczy zależnie od parametru wysyłanego z aplikacji chcesz zwrócić inny wynik. To nie możesz tego obsłużyć od strony klienta wysyłającego zapytanie ?

2

nie potrzebujesz case-a
założmy ze parametr masz w zmiennej @innerjoin i dla 1 ma być inner join)

 
SELECT C.CustomerID,V.* FROM Customers C LEFT JOIN Visits V ON C.CustomerID = V.CustomerID
where 
(@innerjoin=0
or
   (@innerjoin=1 and not v.customerid is null)
)

1 użytkowników online, w tym zalogowanych: 0, gości: 1