Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Projekt bazy danych
Forum PHP.pl > Forum > Przedszkole
vonski
Witam.
Jestem w trakcie pisania bazy danych żużlowców oraz rozgrywek żużlowych i utknąłem na pewnym etapie. Otóż mam następujący problem:

Chciałbym, aby w profilu każdego zawodnika możliwe było pobranie największych osiągnięć w jego karierze, tzn.. załóżmy, że mamy zawodnika Jan Kowalski, który w swoim dorobku ma udział w Grand Prix we Wrocławiu (2 miejsce) w 1998, Finale Mistrzostw Polski w Gnieźnie (1 miejsce) w 1999 oraz Finale Mistrzostw Polski Juniorów w Tarnowie (3 miejsce) w 2000.

Wynik zapytania powinien mniej więcej wyglądać tak:

Jan Kowalski

2000 Finał Mistrzostw Polski Juniorów (Tarnów) 3 miejsce
1999 Finał Mistrzostw Polski 1 miejsce (Gniezno)
1998 Grand Prix (Wrocław) 2 miejsce

Problem polega na tym, że nie chcę aby powyższe nazwy rozgrywek były samym tekstem, tylko żeby można było w nie kliknąć, po czym przenieślibyśmy się do 'sprawozdania' z danej imprezy. Oczywiście zakładam, że w momencie dodawania osiągów zawodnika, imprezy w jakich brał on udział są już dodane w bazie. Ale nie wiem za bardzo w jaki sposób zaprojektować tabele 'zawodnicy' oraz 'imprezy' ale można było w jakiś w miarę przejrzysty sposób powiązać danego zawodnika z kilkoma imprezami. Tym bardziej, że jeden zawodnik może mieć na koncie zaledwie dwie imprezy, a inny będzie miał dwadzieścia.

W tym momencie udało mi się to zrobić, ale w bardzo karkołomny sposób:

w tabeli 'zawodnicy' mam pole: 'osiagi', w którym wpisane są ID poszczególnych imprez w jakich brał on udział. ID podawane są po przecinku, czyli np. "1, 34, 17", następnie później już w skrypcie za pomocą explode() robię z tego stringa tablicę i za pomocą paru pętli tworzę odpowiednie zapytania. Ale jest to, że tak powiem, "straszny" sposób winksmiley.jpg a tym bardziej natrafiłem teraz na problem z posortowaniem tego. Myślę, że ktoś mądrzejszy zna jakiś bardziej elegancki i zapewne prostszy sposób.
Wiem, że jest to zagmatwane co napisałem, ale starałem się jak najjaśniej opisać problem smile.gif

Z góry dziękuję za pomoc.
Pozdrawiam.
JoShiMa
Ja bym zrobiła trzy tabele
1. Zawodnicy
2. Imprezy
3. Połączenie ID zawodnika, ID imprezy i info o osiągnięciu. (może być dla każdego ID zawodnika kilka rekordów)

Dane wyciąga się za pomocą joinów i odpowiednich warunków smile.gif

Sposób w jaki to w tej chwili zorganizowałeś, jak sam zauważyłeś, jest beznadziejny i powoduje, że danych się ciężko używa.

vonski
No jasne, to jest to! smile.gif

Dzięki i pozdrawiam.
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.