sono necessari alcuni chiarimenti,
forse si doveva scrivere
che viene fuori dalla relazione n:n tra Players e Tavoli
una partita si gioca su più tavoli ?
Posizione indica la posizione in classifica, rispetto a cosa, tavolo, partita o generale ?
battuti, a quale livello ( vedi posizione in classifica ) ?
considerato che,
Players contiene solo dati anagrafici, ininfluenti sul "calcolo", suggerisco di trascurarla al momento,
Tavoli contiene l'id della partita, cercherei di lavorare su un'unica "tabella" generandola con una select
codice:
select
g.id_pl
, t.id_partita
, g.id_tavolo
, g.posizione
, g.n_obb
, g.punti_obb
, g.punti_fuori_obb
, g.punti_partita
from
Gioca_pl_ta g
, Tavoli t
where
g.id_tavolo = t.id_tavolo
presupposto che i tavoli nella tabella "g" siano tutti presenti nella "t" come dovrebbero essere
suggerirei di fare select successive per ottenere il risultato controllando passo per passo
in funzione dei chiarimenti, sarà possibile definire la select successiva
select t1.* from ( select soprastante ) t1 ....
lavorando sempre su una tabella risultante
e solo alla fine aggiungere i dati anagrafici per la presentazione