Zapytanie SQL

0

Witam mam taka takie tabelki w bazie danych :
[Uczen]
Iducznia
Imie
Nazwisko
....

[Klasa]
Idklasa
Rok
Grupa

[UczenKlasa]
IdUczen
IdKlasa

I potrzebuje zapytania ktore zwroci mi imie i nazwisko ucznia ORAZ jezeli jest zapisany do jakiejs klasy do rok i grupe jezeli nie to wartosc pusta, probowalem z JOIN i UNION ale zwraca duplikaty itp jak by ktoś mógł pomóć ..

0

Dodam mi, że chodzi mi o liste uczniów wszystkich uczniów, imie nazwisko i jezeli jest przypisany do klasy do rok i grupe.
Pozdrawiam

0

A jesli przypisany jest do kilku klas, to ktora?

0

Uczen moze byc przypisany tylko do jednej klasy.

0

To po co tabela laczaca wiele do wiele? Jesli id klasy bedzie w tabeli uczen, wtedy zwykly left join wystarczy.

0

Struktury tabel wynika rowniez, ze klasa nalezy do jednej z wielu grup (lub chcesz duplikowac rekordy w tabeli KLASA, co jest zaprzeczeniem normalizacji). Sadze, ze w ramach klasy mialo byc wiele grup, wiec obecny uklad nie jest prawidlowy.

0

Faktycznie macie racje a tak na przyszlosv jak by jeden uczen moglby byc w wielu klasach ? zapisany albo cos takiego:
[Klient]
IDKlienta
Imie

[Towar]
IDTowaru
nazwa

[zakupy]
IDKlienta
Idtowaru

to tak na przylosc, wyswietlic liste klientow i ilosc zakupow oraz klientow ktorzy nic nie kupili .

0

Klienci+zakupy:
SELECT * FROM Klient k JOIN zakupy z ON k.IDKlienta=z.IDKlienta JOIN Towar t ON z.Idtowaru=t.IDTowaru
Klienci, ktorzy nic nie kupili:
SELECT * FROM Klient WHERE IDKlienta NOT IN (SELECT IDKlienta FROM zakupy)

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