Połączenie 2 tabel z warunkiem

0

Mam 2 tabele:

Tabela1:
Nazwisko
PESEL

Tabela2:
PESEL
Aktywny
Rok

Chcę uzyskać wszystkie nazwiska i PESELE z Tabeli1 oraz Rok z Tabeli2, jeśli Aktywny=TAK.
Czyli jeśli takiego PESELU nie ma w drugiej tabeli lub jeśli Aktywny=NIE, to kolumna ROK będzie pusta

Próbowałam coś takiego jak ponizej, jednak to nie działa jak powinno, bo jeśli kolumna Aktywny jest pusta, to nie pokazuje w ogóle rekordow z tabeli1... nie wiem jak to połączyć

SELECT
Tabela1.Nazwisko
Tabela1.PESEL
Tabela2.Rok

WHERE
( Tabela1.PESEL=Tabela2.PESEL(+) AND Tabela2.Aktywny in ('TAK') )

1

left join:

Select
    *
from
    tabela1
   left join tabela2 on tabela1.pesel=tabela2.pesel and tabela2.aktywny='tak'
0
SELECT
Tabela1.Nazwisko
Tabela1.PESEL
CASE WHEN Tabela2.Aktwyny='Yes' Then Tabela2.Rok ELSE null END

From Tabela1 Left Outer join Tabela2 ON Tabela1.PESEL = Tabela2.PESEL

@Panczo - on chciał widzieć zdaje się wszytskie nazwiska i pesel ...tylko rok dla tych co są aktywne ... tak zrozumiałem przynajmniej

1
BlackBad napisał(a):

@Panczo - on chciał widzieć zdaje się wszytskie nazwiska i pesel ...tylko rok dla tych co są aktywne ... tak zrozumiałem przynajmniej

Wyjaśnie na przykładzie, aby zobrazować sytuacje, to fajny przykład do pokazania jak używać warunków w sprzężeniach, moje zapytanie można zapisać w ten sposób:

SELECT
    *
from
    tabela1
    left join (select
                   *
                from
                     tabela2
                where
                      aktywny='tak'
               ) dt on dt.pesel=tabela1.pesel
0

A czy da się to rozpisać z plusami a nie z left join?

0

Nie znam silnika SQL w którym zapisywałoby się coś w WHERE z plusami...

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