consulta pdo para classificar o resultado de acordo com um campo comum de duas tabelas

ok, isso é realmente complicado e eu não consigo entender isso, seria ótimo se você pudesse me ajudar com isso,

estou tentando escrever uma consulta usando pdo que faça o seguinte,

  • obter todos os usuários de uma formação, incluindo o usuário da tabela de formação
  • junte-se à equipe de cada usuário
  • obtenha os jogadores de cada equipe naquela formação e calcule a soma da pontuação
  • classifique o resultado por posição (da formação e do campo de posição da tabela de usuários) do primeiro ao último (1,2,3,4 ..)

O que eu tentei no Code

function getFormation(Request $request, Response $response) {
$id
= $request->getAttribute('id');

$sql
= "SELECT u.id, u.formation, u.position FROM users AS u INNER JOIN formation AS f ON f.userid = u.id INNER JOIN teams as t ON t.userid = u.id WHERE f.id = :id OR u.formation =:id";

try {
$db
= new db();
$db
= $db->connect();
$stmt
= $db->prepare($sql);

$stmt
->bindParam(":id", $id);

$stmt
->execute();

$formation
= $stmt->fetch(PDO::FETCH_OBJ);

$db
= null;

if(empty($formation)) {
$response
->getBody()->write
('
{

"error":

{

"status":"400",

"message":"Invalid Request"

}

}'
);
} else {
$response
->getBody()->write(json_encode($formation));
}
} catch(PDOException $e) {
$response
->getBody()->write
('
{

"error":

{

"message":'
. $e->getMessage() .'
}

}'
);
}
};

o que eu não consigo fazer é

  • entrar na mesa de jogadores em qual id devo entrar? eu tenho 10
    jogadores id na tabela de times

  • calculando a soma das pontuações de todos os jogadores

  • classifique o resultado por posição (da formação e do
    campo de posição da tabela de usuários ) do primeiro ao último (1,2,3,4 ..)

amostra de resultado / dados retornados

posição da formação, usuário da formação, pontuação total 1 (pontuação p1 1 + pontuação p2 1 + pontuação 1 p3 …), pontuação total 2, pontuação total 3, pontuação total 4, pontuação total 5, pontuação total 6, pontos da equipe

aqui está minha estrutura de banco de dados

==============================================

mesa de formação

  • “id” -> formação criada pelo usuário

  • “ID do usuário”

  • “posição” -> posição de formação criada pelo usuário

==============================================

mesa de usuários

  • “Eu iria”

  • “formação” -> formação associada ao usuário

  • “posição” -> posição de formação associada ao usuário

==============================================

mesa de times

  • “Eu iria”

  • “ID do usuário”

  • “pontos”

  • “jogador1”

  • “jogador2”

  • “jogador3”

  • “jogador4”

  • “jogador5”

  • “player6”

  • “jogador7”

  • “jogador8”

  • “jogador9”

  • “jogador10”

==============================================

mesa de jogadores

  • “Eu iria”
  • “score1”
  • “score2”
  • “score3”
  • “score4”
  • “score5”
  • “score6”