Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyciagniecie najmniejszej wartosci z bazy danych
arfer
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 23.04.2012

Ostrzeżenie: (0%)
-----


Witam
Mam takie oto zapytanie do bazy danych ktore zwraca mi najmniejsza wartosc dla danego parametru (wyscig_name) i okreslonego uzytkownika. Wszystko dziala prawidlowo do czasu gdy chce dodac najmniejsza wartosc danego parametru bez podzialu na uzytkownikow (pogrubione). Problem jest taki ze zwraca mi 1 najmniejszy wynik w bazie i powtarza go na wszystkich parametrach. Jesli wyciagne go z nawiasu i dodam do reszty select to dziala ale podaje wyniki tylko wybranego kierowcy (where) a chce aby obok jego wynikow byly najmniejsze wyniki ze wszystkich kierowcow w bazie. Czy ktos wiec jak to zapisac?

  1. $result = dbquery("SELECT zespol_name, wyscig_id, MIN(wynik) AS wynik,
  2. (SELECT MIN(wynik) FROM ".DB_WYNIKI." WHERE sesja_id IN (1,2,3,4)) AS mini_wynik
  3. FROM ".DB_WYNIKI."
  4. LEFT JOIN ".DB_WYSCIGI." USING(wyscig_id)
  5. LEFT JOIN ".DB_ZESPOLY." USING(zespol_id)
  6. WHERE sesja_id IN (1,2,3,4) AND kierowca_id='".$_GET['kierowca_id']."'
  7. GROUP BY wyscig_name
  8. ");
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
arfer
post
Post #2





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 23.04.2012

Ostrzeżenie: (0%)
-----


Tak wyglada caly moj kod :

  1. $result = dbquery("SELECT w1.zespol_name, w1.wyscig_name, MIN(w1.wynik) AS wynik,
  2. (SELECT MIN(w2.wynik) FROM " . DB_WYNIKI . " w2 WHERE w2.sesja_id IN (1,2,3,4) AND w2.wyscig_id = w1.wyscig_id) AS mini_wynik
  3. FROM " . DB_WYNIKI . " w1
  4. LEFT JOIN ".DB_WYSCIGI." USING(wyscig_id)
  5. LEFT JOIN ".DB_ZESPOLY." USING(zespol_id)
  6. WHERE sesja_id IN (1,2,3,4) AND kierowca_id='".$_GET['kierowca_id']."'
  7. GROUP BY wyscig_name
  8. ");
  9.  
  10. if(dbrows($result) > 0)
  11.  
  12. echo "
  13. <table align='center' style=' border-collapse: collapse; margin-top: ' width='100%' bgcolor='#FFFFFF'>
  14. <tr>
  15. <td colspan='5' style='border: 1px solid black; border-collapse: collapse; padding: 10px;'><b>Przebieg kariery</b></td>
  16. </tr>
  17. <tr>
  18. <td style='border: 1px solid black; border-collapse: collapse; padding: 5px;'>Wyscig</td>
  19. <td style='border: 1px solid black; border-collapse: collapse; padding: 5px;'>Zespół</td>
  20. <td style='border: 1px solid black; border-collapse: collapse; padding: 5px;'>Indywidualny najlepszy czas</td>
  21. <td style='border: 1px solid black; border-collapse: collapse; padding: 5px;'>Najlepszy czas tygodnia</td>
  22. <td style='border: 1px solid black; border-collapse: collapse; padding: 5px;'>Strata</td>
  23. </tr>";
  24. while ($data = dbarray($result))
  25. {
  26. echo "
  27. <tr>
  28. <td style='border: 1px solid black; border-collapse: collapse; padding: 5px;'>".$data['wyscig_name']."</td>
  29. <td style='border: 1px solid black; border-collapse: collapse; padding: 5px;'>".$data['zespol_name']."</td>
  30. <td style='border: 1px solid black; border-collapse: collapse; padding: 5px;'>".$data['wynik']."</td>
  31.  
  32.  
  33.  
  34. <td style='border: 1px solid black; border-collapse: collapse; padding: 5px;'>".$data['mini_wynik']."</td>
  35. <td style='border: 1px solid black; border-collapse: collapse; padding: 5px;'>".(strata($max, $data['wynik']))."</td>
  36.  
  37. </tr> ";
  38.  
  39. }
  40.  
  41. echo "</table>";


Funkcja straty jest niewazna wiec jej nie kopiowalem. Skrypt pobiera rekordy z bazy wyniki gdzie sa kolumny sesja_id (wezmie tylke te gdzie bedzie 1,2,3,4) zespol_id i wyscig_id (przeksztalci na nazwy w left join using...) wynik i kierowca_id.
Wszystko dziala przy kodzie zamieszczonym w 1 poscie z tym ze najlepszy wynik dla wszystkich kierowcow zwraca ciagle ta sama najnizsza wartosc z calej tabeli nie zwracajac uwage na odwolanie do wyscigow. Jak zrobic by pokazywalo najnizsza wartosc dla wszystkich kierowcow poszczegolnych wyscigow.

Ten post edytował arfer 30.04.2012, 15:02:16
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.12.2025 - 18:16