SELECT p.id_team, p.heure, p.groupe, p.valider FROM quart_final p
INNER JOIN equipe e ON e.id = p.id_team
INNER JOIN session s ON s.id = p.id_session AND YEAR(s.date_creation) = YEAR(CURRENT_DATE)
WHERE (SELECT Max(score_team) FROM quart_final WHERE groupe = 1)
Bonjour à tous.
Alors voilà, je cherche à sortir le meilleur score entre les deux champs du groupe 1
J'ai un peu de mal, les requêtes que je test me sortent soit
- tous les résultats,
- soit les deux champs du groupe 1 (moi je veux juste le meilleur score des deux)
je cherche à sortir le meilleur score entre les deux champs du groupe 1
C'est ce que fait la sous-requête dans ta clause WHERE ... Mais je ne comprends pas ce que tu cherches à obtenir ...
Peux-tu nous donner le résultat attendu ?
Un peu au pif, je tente ceci :
SELECT
p.id_team,
p.heure,
p.groupe,
p.valider,
p.score_team
FROM
(
-- Score max par équipe
SELECT id_team, MAX( score_team ) AS max_score
FROM quart_final
GROUP BY id_team
) m
INNER JOIN quart_final p
ON m.id_team = p.id_team
AND m.max_score = p.score_team
INNER JOIN equipe e
ON e.id = p.id_team
INNER JOIN session s
ON s.id = p.id_session
AND YEAR(s.date_creation) = YEAR(CURRENT_DATE)
Le meilleur score entre les deux id_team du groupe 1
Donc en gros le résultat que je souhaite obtenir 1 | 280 | 14h45 | 1 | 0
SELECT Max(score_team), p.id_team FROM quart_final p
INNER JOIN equipe e ON e.id = p.id_team
INNER JOIN session s ON s.id = p.id_session AND YEAR(s.date_creation) = YEAR(CURRENT_DATE)
WHERE p.groupe = 1
Cette requête me sors bien le meilleur score entre les deux, mais pas avec le bon id
Elle sort les meilleurs scores de chaque team, je n'avais pas compris que tu voulais par groupe ...
SELECT
p.id_team,
p.heure,
p.groupe,
p.valider,
p.score_team
FROM
(
-- Score max par groupe
SELECT groupe, MAX( score_team ) AS max_score
FROM quart_final
GROUP BY groupe
) m
INNER JOIN quart_final p
ON m.groupe = p.groupe
AND m.max_score = p.score_team
INNER JOIN equipe e
ON e.id = p.id_team
INNER JOIN session s
ON s.id = p.id_session
AND YEAR(s.date_creation) = YEAR(CURRENT_DATE)
Par contre, attention ... si dans un même groupe il y a plusieurs fois un score maxi identique, alors tu auras des doublons ... exemple si la team 287 du groupe 1 fait aussi un score de 1 ...
SELECT * FROM quart_final p WHERE(
SELECT MAX(p.score_team) FROM (
SELECT p.id_team FROM quart_final p
INNER JOIN session s ON s.id = p.id_session AND YEAR(s.date_creation) = YEAR(CURRENT_DATE)
WHERE p.groupe = 1) as x) AND p.groupe = 1
Si quelqu'un peut me la confirmer en tout cas elle me sort ce que je souhaite donc je vais utiliser ça pour le moment je verrais bien
Je pense que nous nous sommes croisé, ma réponse ci-dessus me paraît plus propre, dans le sens où elle fonctionne indifféremment pour tous les groupes, la tienne se limitant au groupe 1 ...
Par contre, attention ... si dans un même groupe il y a plusieurs fois un score maxi identique, alors tu auras des doublons ... exemple si la team 287 du groupe 1 fait aussi un score de 1 ...
- Edité par Benzouye il y a moins de 30s
Bien vue mais aucun doublons possible sauf erreur humaine de saisie de score. C'est pour les 1/2 final pour le foot Du coup c'est sont des matchs qui doivent obligatoirement être gagné par l'une où l'autre équipe du coup y'auras toujours que 1 gagnant et un perdant
Merci encore
Toujours motivé à apprendre :)
Requête sql meilleur score
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.