Mam tablice:
(napis (fk) oznacza klucz obcy)
student[id, imie, nazwisko,...]
zajecia[id,nazwa,rok_akademicki,semestr...]
student_zajecia[zajecia_id(fk), student_id(fk)] (obsługuje relację w-w pomiedzy student i zajecia)
ocenienie[id,id_zajec(fk) data,punkty_max,...] - nazwa może nietrafiona, ale ma obsługiwać kartkówki, kolokwia, referaty, zadania domowe - wszystko to, z czego można dostać ocenę.
oceny[id, id_studenta(fk), ocenienie_id(fk), ocena,...] - dla danego studenta i danego "ocenienia" (np. kolokwium) przypisuje ocene (i inne dane). 
Na parę (id_studenta, ocenienie_id) nałożony jest klucz UNIQUE (jedna osoba z jednego kolokwium może dostać conajwyżej jedną ocenę).

Mam taki problem: dla danej liczby (np. 2) chciałbym znaleźć listę studentów wraz z ich ocenami z danego kolokwium (tzn. kolokwium o id=2), ale aby ta lista obejmowała tylko tych studentów, którzy uczęszczają na zajęcia, z którego było to kolokwium.
To chyba jasne. Np. kolokwium o id=2 jest z przedmiotu XYZ. Chcę listę studentów chodzących na zajęcia XYZ, a obok nich ich oceny z tego kolokwium (Jeśli nie pisali koła, to powinno zwrócić NULL).

Moje dwa sposoby zrobienia tego są dość skomplikowane:
1)
  1. SELECT s.id, s.imie, s.nazwisko, o.ocena
  2. FROM student s LEFT JOIN oceny o ON s.id = o.id_studenta AND o.ocenienie_id =2
  3. WHERE s.id IN (
  4.    SELECT s.id
  5.    FROM student s, student_zajecia s_z, ocenienie oc
  6.    WHERE s_z.student_id = s.id
  7.    AND s_z.zajecia_id = oc.id_zajec
  8.    AND oc.id =2
  9.    )

2)
  1. SELECT s.id, s.imie, s.nazwisko, o.ocena
  2. FROM (student s, student_zajecia s_z, ocenienie oc) LEFT JOIN `oceny` o ON s.id = o.id_studenta AND o.ocenienie_id =2
  3. WHERE s_z.student_id = s.id AND s_z.zajecia_id = oc.id_zajec AND oc.id =2


Moje pytania:
1) Jak to da się zrobić prościej (jeśli można  dry.gif )?
2) Który ze sposobów jest bardziej wydajny (na mojej małej bazie danych nie potrafię tego sprawdzić - różnice są w ułamkach sekund)?

Dodam, ze to są moje jak dotąd najbardziej skomplikowane zapytania; stąd moje obawy co do nich.