Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] jak dodać kolejną kolumnę do wyniku
SeN
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 18.01.2008

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


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 (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SeN
post
Post #2





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 18.01.2008

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


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 ?

Ten post edytował SeN 11.08.2008, 12:40:57
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: 12.10.2025 - 00:16