Próbuje:

Dla każdego gracza uzyskaj wynik z każdego wydarzenia wymienionego w tabeli events_table i pokaż sumę z ich 3 najlepszych wyników, tak:

Jan id=1 zagrał wszystko i zdobył 16,11,12,4, więc pierwsza trójka = 39

Jaki jest najłatwiejszy sposób uzyskania tych danych?

Stół_graczy

id  /   name
------------
1   /   john
2   /   sam
3   /   bill
4   /   joe

Tabela_wydarzeń

id  /   date
------------------
1   /   01/03/2012
2   /   04/04/2012
3   /   06/06/2012
4   /   08/08/2012

event_id_1_results_table

player_id   /   score
---------------------
1           /   12
3           /   16
0           /   11
0           /   8

event_id_2_results_table

player_id   /   score
---------------------
1           /   16
2           /   14
3           /   11
0           /   14

event_id_3_results_table

player_id   /   score
---------------------
1           /   8
3           /   12
4           /   13
0           /   18

event_id_4_results_table

player_id   /   score
---------------------
2           /   6
3           /   4
4           /   9
0           /   7
1
mr2ts 17 październik 2012, 13:07

1 odpowiedź

Najlepsza odpowiedź

Jeśli potrzebujesz lub chcesz zachować różne tabele, użyj unii:

select sum(score)
from ((select score from event_id_1_results_table where player_id = 1)
       union
       (select score from event_id_2_results_table where player_id = 1)
       union
       (select score from event_id_3_results_table where player_id = 1)
       order by score desc limit 3)
0
Olaf Dietsche 17 październik 2012, 13:41