![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 3.04.2016 Ostrzeżenie: (0%) ![]() ![]() |
Cześć, chciałbym ponownie prosić Was o wsparcie. Poddałem się.
Otóż: Mam dwie tabele: Zawodnicy i Mecze. Dla uproszczenia Zawodnicy to: id_zawodnik, a Mecze to: id_mecz, id_zawodnik1, id_zawodnik2, pkt_zawodnik1 W momencie rozegrania meczu do tabeli Mecze dodaje 2 wpisy, np. id_mecz:1 (AI), id_zawodnik1:5, id_zawodnik2: 6, pkt_zawodnik1: 3 id_mecz:2 (AI), id_zawodnik1:6, id_zawodnik2: 5, pkt_zawodnik2: 1 I teraz do sedna: chce wyświetlić rozegrane mecze w formie tabeli (Jakiś znaleziony przykład). Umiem to zrobić tylko w bardzo złe sposoby. 1) poprzez SQL'a w pętli podczas generowania tabeli. Dla każdej komórki tabeli sprawdzam czy istnieje mecz where id_zawodnik1 = and id_zawodnik2 = . Co jest oczywiście głupie bo liczba zapytań będzie rosła wraz z liczbą zawodników. 2) Na początku miesiąca wstawiam do tabeli mecze mecze każdy z każdym z jakąś wartością, która powie mi, że te mecze to "fake". To rozwiązanie też mi sie nie podoba bo musiałbym co miesiąc o to dbać (w sensie znowu "jakoś" to zautomatyzować), a po drugie po co mi w tabeli wpisy, które nie są rzeczywistymi meczami. :/ No więc robiąc LEFT JOIN mogę sobie odebrać tylko i ażwszystkie rozegrane mecze. Chciałbym to uzupełnić o wszystkie warianty dla każdego zawodnika (przykład niżej) Nie umiem teraz obrobić tych danych w taki sposób, żeby móc to wyświetlić w tabeli jaką pokazałem wyżej. Przydałoby mi się mieć coś na zasadzie: id_zawodnik vs id_zawodnik2 1 vs 2 (JEŚLI TAK: echo pkt_zawodnik1, JEŚLI NIE: echo 'bd') 1 vs 3 (JEŚLI TAK: echo pkt_zawodnik1, JEŚLI NIE: echo 'bd') 1 vs 4 2 vs 1 2 vs 3 2 vs 4 ... Może mi ktoś podpowiedzieć jak mogę otrzymać wyniki w takiej formie (php lub mysql)? Ten post edytował Zdziho 11.04.2016, 12:03:41 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 8.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
1. Masz tabelę Mecze
2. Masz tabelę Zawodnicy 3. Masz tabelę mecze_zawodnicy, ktora ogarnia Ci relacje Mecz - Zawodnik Tak powinienes to zrobic. Jak masz to zrobione w OOP to w konstruktorze Mecz zaciągasz przynależnych do tej instancji Meczu zawodników. Wyświetlanie tego to juz bajka. Ten post edytował piotras 11.04.2016, 13:39:46 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 3.04.2016 Ostrzeżenie: (0%) ![]() ![]() |
Troche nie wiem co miałbym trzymać w tabeli mecze_zawodnicy? W tabeli mecze mam chyba wszystko co mi jest potrzebne do ogarniecia: id zawodnikow ktorzy ze soba grali, wynik, punkty.
Chciałbym tylko jakoś uzupełnić sobie wynik zapytania o pozostałe kombinacje meczy. Przykładowo dla 3 zawodników, gdzie został rozegrany 1 mecz, dostane dwa wiersze (np. id1 vs id3): 1 vs 3 3 vs 1 A chciałbym: 1 vs 2 (nie było meczu) 1 vs 3 (byl -> wynik zapytania) 2 vs 1 ( nie było meczu) 2 vs 3 (nie było) 3 vs 1 (byl - wynik zapytania) 3 vs 2 ( nie było) btw nie mam tego w OOP |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 380 Pomógł: 2 Dołączył: 5.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Przykładowo dla 3 zawodników, gdzie został rozegrany 1 mecz, dostane dwa wiersze (np. id1 vs id3): Po co podwajasz wszystkie dane? Jeśli był mecz 1 vs 2 to wiadomo że był też mecz 2 vs 1 z "lustrzanym" wynikiem i nie ma żadnego sensu dublowanie tych danych w bazie i tylko zaciemnia obraz tego co chcesz zrobić.1 vs 3 3 vs 1 Cytat A chciałbym: Generuj grafik spotkań i dodaj sobie marker określający czy dany mecz już był.1 vs 2 (nie było meczu) 1 vs 3 (byl -> wynik zapytania) 2 vs 1 ( nie było meczu) 2 vs 3 (nie było) 3 vs 1 (byl - wynik zapytania) 3 vs 2 ( nie było) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.09.2025 - 00:38 |