![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 25.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
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)
2)
Moje pytania: 1) Jak to da się zrobić prościej (jeśli można ![]() 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. Ten post edytował Berkovits 27.10.2007, 17:42:00 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 12:09 |