PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 26-09-2012 12:28:26

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Différence dans un SELECT ?

Bonjour,

Je m'interroge sur une possibilité dans Mysql.

J'ai une requête affichant des résultats sportifs et je voudrais afficher les dernières confrontations entre deux mêmes équipes mais en affichant seulement cela sous forme "statistique" (2 victoires - 1 nul - 2 défaites par exemple)

Peut-être que je fais fausse route dans ma façon d'aborder le sujet mais un genre de COUNT(ScoreEquipe > ScoreAdverse) AS NombreVictoire (aïe). Je sais que je peux utiliser un WHERE ScoreEquipe > ScoreAdverse pour les victoires WHERE ScoreEquipe = ScoreAdverse pour les matchs nuls etc ... mais comment le faire en une seule requête ?

Merci à vous :-)

Antho

Hors ligne

#2 26-09-2012 14:13:27

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Différence dans un SELECT ?

Saluton,
Peux-tu nous montrer ta requête ou, à défaut, le résultat d'un SHOW CREATE TABLE nomdelatable et un jeu d'essai, parce que là, la formulation de ta demande est un peu confuse.
Merci.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 26-09-2012 14:20:28

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Différence dans un SELECT ?

Maljuna Kris a écrit :

Saluton,
Peux-tu nous montrer ta requête ou, à défaut, le résultat d'un SHOW CREATE TABLE nomdelatable et un jeu d'essai, parce que là, la formulation de ta demande est un peu confuse.
Merci.

Bonjour,

Je n'ai pas fait de requête pour le moment justement parce que je cherche à savoir comment je peux en construire une. J'ai cependant une table :


CREATE TABLE `Matchs_Resultats` (
 `Id` INT(10) NOT NULL AUTO_INCREMENT,
 `IdMatch` INT(10) NOT NULL,
 `IdEquipe` INT(10) NOT NULL,
 `ScoreEquipe` INT(2) NOT NULL,
 `ScoreAdverse` INT(2) NOT NULL,
 `DureeMatch` VARCHAR(5) NOT NULL,
 PRIMARY KEY  (`Id`),
 KEY `IdMatch` (`IdMatch`)
) ENGINE=MyISAM AUTO_INCREMENT=284 DEFAULT CHARSET=latin1
 

Je cherche juste à savoir comment je pourrais afficher le nombre de victoire (donc ScoreEquipe > ScoreAdverse) de nul (donc ScoreEquipe = ScoreAdverse) et de défaite (donc ScoreEquipe < ScoreAdverse) avec une seule requête, si toute fois cela est possible ...

Merci à toi :-)

Dernière modification par Anthotill (26-09-2012 14:21:33)

Hors ligne

#4 26-09-2012 14:28:24

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Différence dans un SELECT ?

Comment sauras-tu qu'il s'agit toujours bien des deux mêmes équipes ?
Tu penses mettre la table en jointure avec elle-même sur les idMatch et filtrer sur les deux idEquipe, c'est cela ?


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 26-09-2012 14:38:40

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Différence dans un SELECT ?

Oui, mais en réalité il s'agit toujours de la même équipe, seul les adversaires sont différents. IdEquipe pourrait donc se nommer plus logiquement IdEquipeAdverse

Hors ligne

#6 26-09-2012 14:46:05

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Différence dans un SELECT ?

Je te rappelle les termes de ton post initial

ai une requête affichant des résultats sportifs et je voudrais afficher les dernières confrontations entre deux mêmes équipes...

Et maintenant tu dis

en réalité il s'agit toujours de la même équipe, seul les adversaires sont différents.

et je pleure !


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#7 26-09-2012 14:50:10

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Différence dans un SELECT ?

Oui, une des deux équipes est toujours la même. Je voulais dire historique des confrontations entre deux équipes, le "même" n'a effectivement aucun sens je m'en excuse.

Dernière modification par Anthotill (26-09-2012 14:50:30)

Hors ligne

#8 26-09-2012 14:59:35

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Différence dans un SELECT ?

Désolé, mais je ne comprends pas ce que tu veux dire.
Veux-tu savoir pour chaque équipe son score en nombre de matchs gagnés, nombre de matchs nuls et nombre de matchs perdus ?

SELECT IdEquipe,
        SUM(IF(ScoreEquipe>ScoreAdverse,1,0)) AS gagnés,
        SUM(IF(ScoreEquipe=ScoreAdverse,1,0)) AS nuls,
        SUM(IF(ScoreEquipe<ScoreAdverse,1,0)) AS perdus
FROM `Matchs_Resultats`
GROUP BY IdEquipe

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 26-09-2012 15:05:23

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Différence dans un SELECT ?

Maljuna Kris a écrit :

Désolé, mais je ne comprends pas ce que tu veux dire.
Veux-tu savoir pour chaque équipe son score en nombre de matchs gagnés, nombre de matchs nuls et nombre de matchs perdus ?

SELECT IdEquipe,
        SUM(IF(ScoreEquipe>ScoreAdverse,1,0)) AS gagnés,
        SUM(IF(ScoreEquipe=ScoreAdverse,1,0)) AS nuls,
        SUM(IF(ScoreEquipe<ScoreAdverse,1,0)) AS perdus
FROM `Matchs_Resultats`
GROUP BY IdEquipe

Tout à fait. J'essaye cela en rentrant et je vous tiens au courant. J'ai l'impression à la lecture que c'est bien ce que je cherche :-)

Hors ligne

#10 27-09-2012 08:54:54

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Différence dans un SELECT ?

Bonjour,

C'est bien ce que je cherchai, merci beaucoup :-) Est ce que cette solution est plus optimisée que trois requête avec  where ScoreEquipe>ScoreAdverse - where ScoreEquipe=ScoreAdverse ... à votre avis car habituellement je procède de cette façon?

Merci

Dernière modification par Anthotill (27-09-2012 09:01:48)

Hors ligne

#11 27-09-2012 11:04:33

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Différence dans un SELECT ?

Étant moi-même assez partisan des SGBD "épais" je t'engage à favoriser la résolution de ce type de problème plutôt en amont de PHP.
Cela sous-entend, bien-entendu, d'avoir optimisé la base de données (choix des types de colonnes, des index, modélisation au plus près des formes normales, contraintes d'intégrité, etc...)


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#12 27-09-2012 16:53:10

Anthotill
Membre
Inscription : 14-03-2010
Messages : 81

Re : Différence dans un SELECT ?

Maljuna Kris a écrit :

Étant moi-même assez partisan des SGBD "épais" je t'engage à favoriser la résolution de ce type de problème plutôt en amont de PHP.
Cela sous-entend, bien-entendu, d'avoir optimisé la base de données (choix des types de colonnes, des index, modélisation au plus près des formes normales, contraintes d'intégrité, etc...)

Ok. Il est vrai qu'aujourd'hui j'essaie d'optimiser les tables avec les bons types de colonnes etc beaucoup plus qu'avant mais il y a probablement beaucoup de choses qui m'échappe ce n'est pas mon métier alors je me lance un peu dans l'aventure à chaque fois sans vraiement poser les choses.

Merci pour ton aide :-)

Anthony

Hors ligne

#13 27-09-2012 17:43:41

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Différence dans un SELECT ?

Nedankinde.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums