maciek fly Opublikowano 8 Czerwca 2007 Zgłoś Opublikowano 8 Czerwca 2007 witam wszystkich, sa 2 tabele: oceny i studenci (polaczone przez nr_stud) chcialbym wybrac studentow posiadajacych najwyzsze srednie w swoich grupach (nr_kier) zrobilem to uzywajac view (probowalem przez group by, having.. ale jedyne co udalo mi sie osiagnac to studentow posiadajacych maksymalne srednie biorac pod uwage wszystkich studentow, nie w danej grupie) zrobilem to tak: /////////////////////////////// CREATE VIEW temp AS SELECT s.nr_kier AS kierunek, s.nazwisko AS name, avg( o.ocena ) AS srednie FROM oceny o JOIN studenci s ON s.nr_stud = o.nr_stud /////////////////////////////// i nastepnie: /////////////////////////////// select kierunek, name, max(srednie) from temp group by kierunek /////////////////////////////// dziala w porzadku, pokazuje studentow z danych grup z maks srednia, ale (jak zawsze coś): jesli ilosc studentow z dana srednia maksymalna jest wieksza niz 1, to pokazuje pierwszego (alfabetycznie). moje pomysly na pokazanie wszystkich studentow z maksymalna srednia w danej grupie sie skonczyly. moglby ktos doradzic jakies rozwiazanie? pozdrawiam. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
greg505 Opublikowano 9 Czerwca 2007 Zgłoś Opublikowano 9 Czerwca 2007 pokaz show create table oceny; //studenci Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość Opublikowano 11 Czerwca 2007 Zgłoś Opublikowano 11 Czerwca 2007 SELECT s.nr_kier AS kierunek, s.nazwisko AS name, avg( o.ocena ) AS srednie FROM oceny o JOIN studenci s ON s.nr_stud = o.nr_stud Tu brakuje mi GROUP BY, ale skoro dziala to pewnie zapomniales przepisac do posta... Sprobuj drugie zapytanie wykonac tak: SELECT kierunek, name, srednieFROM temp t1WHERE srednie = (SELECT MAX(srednie) FROM temp t2 WHERE t1.kierunek = t2.kierunek)ORDER BY kierunek, name Mozna to przepisac bez podzapytania (bedzie wydajniej), ale to juz wyzsza szkola jazdy i z glowy tego nie zrobie, wiec potrzebowalbym przykladowy zestaw danych. Jesli chcesz zobaczyc tez taka wersje to wystaw jakis pliczek z odpowiednimi CREATE'ami oraz INSERT'ami, tak zebym mogl sobie baze odtworzyc u siebie. To moze jednak potrwac, niecodziennie miewam wene na SQL'a :) PS. nastepym razem podaj o jaka baze chodzi, przy tym stopniu zaawansowania roznice moga juz byc znaczace. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...