Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] jak dodać kolejną kolumnę do wyniku
Forum PHP.pl > Forum > Przedszkole
SeN
Mam taki problem.
Mam 3 tabele.
1 przechowuje nazwy tras
id|nazwa
2 przechowuje nazwy użytkowników
id|user_name
3 przechowuje wyniki
id| id_trasy | id_usera | wynik

Zapytanie ma za zadanie wyswietlic wszystkie trasy i najwyższy wynik dla kazdej z nich , w przypadku braku wyniku dla danej trasy wyswietalny jest 'brak'. Teraz pytanie, jak mam dodać do wyniku kolejna kolumne w której znajdowała by się informacja o tym który user uzyskał ten wynik.

Moje zapytanie aktualnie wyglada tak
  1. SELECT nazwa, IFNULL( (
  2.  
  3. SELECT max( cast( wynik AS UNSIGNED ) )
  4.  
  5. FROM src_wyniki WHERE src_trasy.id = src_wyniki.id_trasy ) , 'brak') AS best
  6.  
  7. FROM src_wyniki, src_trasy
  8.  
  9. GROUP BY nazwa

kombinuje na różne strony i wykombinować nie moge sadsmiley02.gif
ddiceman
Pisane z glowy, wymaga sprawdzenia
  1. SELECT nazwa, IFNULL(MAX(wynik), 'brak') AS maksymalny_wynik FROM src_trasy LEFT JOIN src_wyniki ON src_trasy.id = src_wyniki.id_trasy GROUP BY src_trasy.id;
JoShiMa
Może w sekcji pomiędzy SELECT a FROM powinieneś wstawić jakieś dobrze obmyślone podzapytanie
SeN
Chyba nie bardzo zrozumiałes o co mi chodzi, bo twoje zapytanie owszem działa ale wyświetla to samo co moje zapytanie. Ja potrzebuje żeby wy wyniku były trzy kolumny. W pierwszej nazwa trasy, w drugiej najwyższy wynik na danej trasie oraz w trzeciej nazwa usera który ten wynik uzyskał.

Patrząc na tp co napisałes mam coś takiego.
  1. SELECT nazwa, IFNULL( max( cast( wynik AS UNSIGNED ) ) , 'brak' ) AS maksymalny_wynik, user_name
  2. FROM src_trasy LEFT JOIN src_wyniki ON src_trasy.id = src_wyniki.id_trasy
  3. INNER JOIN ep_users ON ep_users.user_id = src_wyniki.id_kierowcy
  4. GROUP BY src_trasy.id

Trzecia kolumna została dołaczona ale pojawiają się tam złe wartości.
CAST jest wymagany poniewaz kolumna wynik nie jest typu liczbowego

Edit.
Ciągle nie moge tego rozgryść.Aktualnie mam coś takiego
  1. SELECT nazwa, max( wynik ), u.user_name
  2.  
  3. FROM src_trasy t
  4.  
  5. LEFT JOIN src_wyniki w ON t.id = w.id_trasy
  6.  
  7. LEFT JOIN (SELECT user_id , user_name FROM ep_users) u ON w.id_kierowcy=u.user_id
  8.  
  9. GROUP BY t.id


Tylko jest dziwna sprawa bo to zpytanie nie wywala ani żadnego błedu ani żadnego wyniku. Mógłby ktoś obeznany z tematem powiedziec mi czy to zapytanie ma sens ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.