chipoldo
5.01.2009, 20:46:15
Baza: druzyna(druzyna_id, nazwa_druzyny), tabela(druzyna_id, strzelone, stracone).
chce żeby wyświetliło mi max, lub min w danej kolumnie (strzelone bądź stracone). max i min wyświetla ok. Problem polega na tym, że wyświetla mi zawsze nazwę drużyny, która została wpisana jako pierwsza do tabeli, mimo, że np. rekord max powinien podać inną drużynę. Kiedy wyświetlam id druzyn to jest ok, czyli problem tkwi w polaczeniu dwóch tabel pewnie, jednak nie jestem początkujący i nie umiem sobie z tym problemem poradzić
moje zapytanie wygląda tak:
select druzyna.nazwa_druzyny, max(tabela.strzelone) from `druzyna`, `tabela` where druzyna.druzyna_id=tabela.druzyna_id;
Rafal Filipek
5.01.2009, 20:56:38
ja bym to napisal tak
Kod
select druzyna.nazwa_druzyny, tabela.strzelone from druzyna, tabela
where druzyna.druzyna_id=tabela.druzyna_id order by tabela.strzelone DESC limit 1;
wydaje mi sie ze moze byc szybciej niz korzystanie z max'a. ewentualnie z max'em
Kod
select druzyna.nazwa_druzyny, tabela.strzelone from druzyna, tabela
where druzyna.druzyna_id=tabela.druzyna_id and tabela.strzelone = max(tabela.strzelone);
twoj blad polegal na tym ze pobierasz nazwe druzyny ale nie mowisz ze ma byc to druzyna z najwieksza iloscia strzelonych bramek. czyli brakowalo albo dodatkowego warunku albo kolejnosci.
chipoldo
5.01.2009, 21:37:59
pierwszy sposób już próbowałem wcześniej i rzeczywiście się sprawdził. myślałem jednak, że będzie szybciej z użyciem maxa, ale nie pomyślałem o tym, że z zastosowaniem maxa musi przejrzeć całą kolumnę(chyba dobrze rozumuje?). Czyli zastosuje 1 sposób. Dzięki