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

Wiem, że jest to zagmatwane co napisałem, ale starałem się jak najjaśniej opisać problem

Z góry dziękuję za pomoc.
Pozdrawiam.