Bonsoir...
Je cherche à optimiser certaines de mes requêtes, particulièrement celles qui sont appelées souvent, à savoir le calcul des points.
Pour le moment, j'utilise 2 requêtes imbriquées (pour pouvoir afficher ceux qui n'ont pas de bon prono):
Code : Tout sélectionner
SELECT count(foot_match.id_match) as nbProno , id_user
FROM foot_pronostique
inner join foot_match on foot_match.id_match = foot_pronostique.id_match
inner join foot_grille on foot_grille.id_grille = foot_match.id_grille
inner join foot_competition on foot_competition.id_compet = foot_grille.id_compet
WHERE foot_match.vainqueur != -1
[....]
GROUP BY id_user
Qui fait boucler la suivante:
Code : Tout sélectionner
SELECT count(foot_match.id_match) as nbPoints
FROM foot_pronostique
inner join foot_match on foot_match.id_match = foot_pronostique.id_match
inner join foot_grille on foot_grille.id_grille = foot_match.id_grille
inner join foot_competition on foot_competition.id_compet = foot_grille.id_compet
where foot_match.vainqueur = foot_pronostique.vainqueur
AND foot_match.vainqueur != -1
AND id_user = $idusr
[...]
Les [...] Sont les clauses where supplémentaires (et identiques aux 2 requêtes) qui sont appliquées ou non en fonction des paramètres de la fonction. Les chanmps concernés sont
- foot_grille.id_grille
- foot_competition.id_compet
- foot_competition.id_saison
- foot_competition.type_compet
D'où le besoin de faire toutes les jointures.
Pour mes calculs, j'ai besoin de:
Penser à faire afficher les personne n'ayant aucun prono de juste!!
Le schéma est le suivant: