Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP + MYSL] Obrobienie danych po wykonanym zapytaniu
Forum PHP.pl > Forum > PHP
Zdziho
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
  1. SELECT * FROM Mecze LEFT JOIN Zawodnicy ON Zawodnicy.id_zawodnik = Mecze.id_zawodnik2
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)?
piotras
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.
Zdziho
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
maryaan
Cytat(Zdziho @ 12.04.2016, 14:20:11 ) *
Przykładowo dla 3 zawodników, gdzie został rozegrany 1 mecz, dostane dwa wiersze (np. id1 vs id3):
1 vs 3
3 vs 1
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ć.

Cytat
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)
Generuj grafik spotkań i dodaj sobie marker określający czy dany mecz już był.
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.