Wpis z mikrobloga

#naukaprogramowania #sql #plsql #oracle
Witajcie SQL-owi przyjaciele, mam zadanie do rozwiązania i nie wiem gdzie popełniłem błąd.
Zadanie:

Wypisz imiona, nazwiska i stopnie naukowe wszystkich dydaktyków. Uwzględnij dydaktyków, którzy nie mają stopnia.


moje rozwiązanie:

select o.imie, o.nazwisko, st.stopien from osoba o join dydaktyk d on o.idosoba=d.idosoba
join stopnietytuly st on d.idstopien=st.idstopien where d.idstopien is null and d.idstopien is not null

i wyskakuje mi:

no rows selected
próbowałem dać po wherze:
nvl(d.idstopien,'brak') - ale dowiedziałęm się że po wherze nie można dawać nvl (chyba że coś źle zrozumiałem)

ktoś, coś?
  • 15
SELECT o.imie, o.nazwisko, COALESCE(st.stopien) from osoba o

INNER JOIN dydaktyk d ON o.idosoba = d.idosoba

LEFT JOIN stopnietytuly st ON d.idstopien = st.stopien


@Ginden: SQL Error: ORA-00938: not enough arguments for function
00938. 00000 - "not enough arguments for function"
SELECT o.imie, o.nazwisko, COALESCE(st.stopien,'brak') from osoba o
INNER JOIN dydaktyk d ON o.idosoba = d.idosoba
LEFT JOIN stopnietytuly st ON d.idstopien = st.stopien

Error starting at line : 3 in command -
SELECT o.imie, o.nazwisko, COALESCE(st.stopien,'brak') from osoba o
INNER JOIN dydaktyk d ON o.idosoba = d.idosoba
LEFT JOIN stopnietytuly st ON d.idstopien = st.stopien
Error report -
SQL Error: ORA-01722: invalid number
01722. 00000 - "invalid number"
*Cause: The specified number
SELECT o.imie, o.nazwisko, COALESCE(st.stopien,'brak') from osoba o

INNER JOIN dydaktyk d ON o.idosoba = d.idosoba

LEFT JOIN stopnietytuly st ON d.idstopien = st.stopien


@ugotowany_kamien: oracle, dorzuć AS do aliasów

SELECT o.imie, o.nazwisko, COALESCE(st.stopien,'brak') from osoba AS o
INNER JOIN dydaktyk AS d ON o.idosoba = d.idosoba
LEFT JOIN stopnietytuly AS st ON d.idstopien = st.stopien