Przetworzenie wyników z tabel

0

Temat posta nie wiele mówi, w związku z czym już tłumaczę.. bo dotyczy to zarówno baz danych oraz php (a dokładnie wyświetlenia danych w odpowiedniej formie..)

Po użyciu zapytania otrzymuje z kilku tabel następujący wynik:
user image

Zapytanie wygląda tak:

SELECT p.firstname
    ,p.lastname
    ,t.tournament_name
    ,c.competition_name
    ,ctr.total_value
    ,s.partial_value
FROM persons p
INNER JOIN participants pp
    ON p.person_id = pp.person_id
INNER JOIN ct_result_2013 ctr
    ON pp.participant_id = ctr.participant_id
INNER JOIN competition_tournament ct
    ON ctr.ct_id = ct.ct_id
INNER JOIN tournaments t
    ON ct.tournament_id = t.tournament_id
INNER JOIN competitions c
    ON ct.competition_id = c.competition_id
INNER JOIN shots_2013 s
    ON ctr.ct_result_id = s.ct_result_id
WHERE c.competition_name LIKE 'karabinek'
    AND t.tournament_name LIKE 'Dla zakochanych'
ORDER BY p.firstname, p.lastname;

..po krótce: są to wyniki z danych zawodów oraz konkurencji strzeleckich. Z racji tego, że każdy strzał oraz wynik końcowy ma odwzorowanie w bazie wyniki z zapytania są takie jak na załączonym screenie.

Teraz dla takiego zapytania chciałbym na stronie internetowej (przy użyciu php) wygenerować tabele, która każdy pojedyńczy strzał ma tak jakby w osobnej kolumnie tzn.

Imie | Nazwisko | Zawody | Konkurencja | Wynik_końcowy | 1 strzał | 2 strzał | 3 strzał | ...

I teraz pytanie / problem: jak taki efekt uzyskać ?
Czy przerabiać to na poziomie php (tylko jak? np. po załadowaniu do tabeli i operowaniu "jakoś" na tych danych aby uzyskać wynik końcowy?); czy może można to już robić jakoś na poziomie bazy danych (mysql) ?

Jeśli chodzi o php, to problem jaki mi się "maluje" to w jaki sposób mógłbym sprawnie manipulować tymi danymi, bo trzeba jakoś sprawdzać kiedy ma być tworzony kolejny wiersz - dla nowej osoby oraz co zrobić jakby się chciało pokazać wyniki wszystkich osób ze wszystkich konkurencji dla danych zawodów.. Wtedy liczba "częściowych" wyników (z każdego strzału) byłaby różna bo dla róznych konkurencji jest różna liczba prób..

Uff.. to chyba wszystko.. mam nadzieje, że możliwie zrozumiale przedstawiłem problem i będziecie mogli mi coś doradzić.. bo być może jest jakiś prosty sposób aby sobie z tym poradzić..

0

Po prostu musisz dać takie zapytanie, aby w wyniku zwróciło Ci takie kolumny jak potrzebujesz. W tym przypadku:

Imie | Nazwisko | Zawody | Konkurencja | Wynik_końcowy | 1 strzał | 2 strzał | 3 strzał | ...

O to Ci chodzi? Inaczej tego nie ździełasz chyba.

0
Ciekawski napisał(a):

Po prostu musisz dać takie zapytanie, aby w wyniku zwróciło Ci takie kolumny jak potrzebujesz. W tym przypadku:

Imie | Nazwisko | Zawody | Konkurencja | Wynik_końcowy | 1 strzał | 2 strzał | 3 strzał | ...

O to Ci chodzi? Inaczej tego nie ździełasz chyba.

Tak, podałem ten wzór w pierwszym poście.. tylko jak takie zapytanie skonstruować ? Bo normalnie jest tak, że każdy strzał jest zapisywany odpowiednio w tabeli shots i wynik jest zapisywany w jednej kolumnie... dlatego załączyłem powyżej screen z mojego zapytania dla zobazowania sprawy..

0

Czyli po wpisaniu do bazy rekordu tak naprawdę nie wiesz ( patrząc na bazę ) który strzał miał ile punktów?? Sorry ale za bardzo nie ogarniam rzeczywistości którą modelujesz. Niemniej jednak aby zwrócić to o co chcesz, musisz mieć to w osobnych kolumnach. Jeżeli nie masz kolumnt shot1, shot2, shot3 no to nie da rady. Z punktu widzenia bazy dodajesz kolejne punkty ( nie ma znaczenia jaki to strzał ).

0

No w sumie nie wiem, który dokładnie strzał miał ile punktów.. może by należało jakoś to również zapisać w bazie.. Ogólnie framgent bazy wygląda tak:
user image
wynik ogólny jest w ct_results_2013 a poszczególne strzały są zapisywane "jeden pod drugim" w tabeli shots.. i wszystkie wyniki "częściowe" są zapisywane w tej samej kolumnie, stąd taki wynik z zapytania z pierwszego posta..

0

A czy te strzały mają jakieś id? że to 1, 2, 3. Ja nic takie w tej tabeli nie widzę, zatem nie osiągniesz zamierzonego efektu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1