Wyszukiwanie danych z jednej tabeli na podstawie danych z drugiej

0

Mam na zadanie (w bazie Oracle) wybranie przedmiotów z tabeli przedmioty które nie mają zaliczenia (tabela zaliczenia). Napisałem cos takiego ale nie działa, nie liczę na rozwiązanie ale na podpowiedź ;)

SELECT PRZEDMIOT_ID,NAZWA FROM PRZEDMIOTY INNER JOIN ZALICZENIA ON PRZEDMIOTY.PRZEDMIOT_ID = ZALICZENIA.PRZEDMIOT_ID WHERE NOT EXISTS (SELECT PRZEDMIOT_ID FROM PRZEDMIOTY);
0
SELECT PRZEDMIOT_ID,NAZWA FROM PRZEDMIOTY LEFT JOIN ZALICZENIA ON PRZEDMIOTY.PRZEDMIOT_ID = ZALICZENIA.PRZEDMIOT_ID;

Ale jest błąd

ORA-00918: kolumna zdefiniowana w sposób niejednoznaczny
00918. 00000 - "column ambiguously defined"
*Cause:
*Action:
Error at Line: 1 Column: 8

Struktura tabel
PRZEDMIOTY
PRZEDMIOT_ID|NAZWA|OPIS|RODZAJ|ECTS
ZALICZENIA
NR_ZAL|STUDENT_ID|PRZEDMIOT_ID|WYKLADOWCA_ID|DATA_ZAL|KIERUNEK_ID|WYNIK

0

Jeżeli chcesz wybrać z tabeli, rekordy które nie mają odpowiednika w drugiej to nie mżesz kozystać z inner joina bo to zwraca część wspólną...

Więc zmiana sprzężenia + warunek:

SELECT 
    PRZEDMIOT_ID
    ,NAZWA 
FROM 
    PRZEDMIOTY 
    LEFT JOIN ZALICZENIA ON PRZEDMIOTY.PRZEDMIOT_ID = ZALICZENIA.PRZEDMIOT_ID 
WHERE 
    ZALICZENIA.PRZEDMIOT_ID is Null
0
Panczo napisał(a):

Jeżeli chcesz wybrać z tabeli, rekordy które nie mają odpowiednika w drugiej to nie mżesz kozystać z inner joina bo to zwraca część wspólną...

Więc zmiana sprzężenia + warunek:

SELECT 
    PRZEDMIOT_ID
    ,NAZWA 
FROM 
    PRZEDMIOTY 
    LEFT JOIN ZALICZENIA ON PRZEDMIOTY.PRZEDMIOT_ID = ZALICZENIA.PRZEDMIOT_ID 
WHERE 
    ZALICZENIA.PRZEDMIOT_ID is Null

Po pewnym czasie na to wpadłem ale dzięki :P
Tylko, że dalej jest ORA-00918

0

Kolumna zdefiniowana jest w sposob niejednoznaczny

0

Podczas wykonywania tego polecenia SQL następuje błąd o tym identyfikatorze. Tyle, że zdefiniowałem co z jakiej tabeli chcę wybierać

0

Dziękuję ;)

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