PHP|Débutant :: Forums

Advertisement

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

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

#1 14-11-2011 22:09:43

Sq78
Membre
Inscription : 13-05-2009
Messages : 47

Données incomplètes dans le résultat de ma requête

Bonsoir,
je possède 2 tables avec comme champs importants pour chacune:

la table rencontres est composée des champs resultat, journee, ladate, categorie, score, equipe1, equipe2

La table equipes comporte les champs abrev, nomreel

Je souhaite afficher la dernière journée des matchs joués de chaque équipe.

Voici ma requête:

SELECT t1.resultat, MAX( t1.journee ) , t1.ladate, t1.categorie, t1.score, t1.equipe1, t1.equipe2, t2.calendrier, t2.nomreel
FROM rencontres AS t1, equipes AS t2 WHERE (
t1.equipe1 = 'monclub'
OR t1.equipe2 = 'monclub'
)
AND t1.categorie = t2.abrev
AND t1.resultat <> '--'
GROUP BY t1.categorie
ORDER BY t1.categorie

Ma requête fonctionne bien si chaque catégorie ne joue qu'un seul match. Seulement ce n'est pas toujours le cas. Certaines catégories jouent plusieurs matchs et dans ce cas, mon GROUP BY t1.categorie n'est pas valable.

Et c'est là que je n'arrive pas à avoir mes résultats. Pouvez vous (encore) m'aider svp ?

Merci d'avance

Hors ligne

#2 15-11-2011 00:20:06

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Données incomplètes dans le résultat de ma requête

Bonsoir,

Houla! Tu m'aurais dit qu'elle fonctionne bien, je ne t'aurais pas cru.
1) Il manque la définition d'une jointure entre ta tables equipe et rencontres, et d'ailleurs si la structure de tes tables que tu nous donnes est complète, je ne sais même pas si une jointure est possible entre les deux tables, ce qui signifierait que tu peux tout mettre à la poubelle et recommencer la structure de ta db.
2) Je ne vois pas l'intérêt d'effectuer un groupement par catégorie si tu filtres tes enregistrements pour 1 équipe^^.
3) En l'état actuel de ta requête ton MAX n'est pas bon car il doit se trouver dans ton filtrage :  t1.journée=MAX(t1.journée), bien que ce filtrage ne soit pas assez précis dans le sens où on ne sait pas de quel championnat il s'agit.

Un show CREATE table de l'ensemble des tables concernées serait un plus pour que l'on puisse t'aider +.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 15-11-2011 08:16:43

Sq78
Membre
Inscription : 13-05-2009
Messages : 47

Re : Données incomplètes dans le résultat de ma requête

Bonjour,
Pour le point 2 de ta réponse, c'est une erreur de ma part. Je voulais dire qu'il y avait plusieurs équipes du même club dans la même poule et que donc ma requête ne m'en donne qu'un.

Pour le point 3, je souhaite avoir tous les championnats.
Clairement, je souhaite pouvoir afficher la dernière journée jouée des cadets, des séniors 1, des minimes.... tout ça dans la même requête. Et par ex pour les séniors 1, il y a 2 équipes du même club dans le même championnat.

Voici enfin la structure exacte des tables

CREATE TABLE `equipes` (
  `id_eq` INT(11) NOT NULL DEFAULT '0',
  `categorie` CHAR(1) NOT NULL DEFAULT '0',
  `sexe` CHAR(1) NOT NULL DEFAULT '',
  `abrev` VARCHAR(6) NOT NULL DEFAULT '0',
  `calendrier` VARCHAR(6) NOT NULL DEFAULT '',
  `equipe` VARCHAR(30) NOT NULL DEFAULT '',
  `nomreel` VARCHAR(40) NOT NULL DEFAULT '',
  PRIMARY KEY  (`id_eq`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Structure de la table `rencontres`
--

CREATE TABLE `rencontres` (
  `ID` INT(11) NOT NULL AUTO_INCREMENT,
  `rencontre` VARCHAR(8) NOT NULL DEFAULT '',
  `ladate` DATE NOT NULL DEFAULT '0000-00-00',
  `categorie` VARCHAR(6) NOT NULL DEFAULT '',
  `equipe1` VARCHAR(30) NOT NULL DEFAULT '',
  `equipe2` VARCHAR(30) NOT NULL DEFAULT '',
  `journee` INT(2) NOT NULL DEFAULT '0',
  `resultat` CHAR(3) NOT NULL DEFAULT '',
  `score` VARCHAR(40) NOT NULL DEFAULT '',
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='Table des rencontres, calendrier,scores, resultats, dates...' AUTO_INCREMENT=133 ;

Dernière modification par Sq78 (15-11-2011 08:50:53)

Hors ligne

#4 15-11-2011 10:50:48

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

Re : Données incomplètes dans le résultat de ma requête

Saluton,
Chaque ligne de la table rencontre est censée représenter l'association entre deux lignes différentes de la table equipes.
On devrait donc y trouver, en FOREIGN KEY, les identifiants de chacune de ces équipes.
Le triplet constitué par ces deux identifiants et la colonne journee devrait même y être déclaré comme index UNIQUE.


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 15-11-2011 12:31:06

Sq78
Membre
Inscription : 13-05-2009
Messages : 47

Re : Données incomplètes dans le résultat de ma requête

Bonjour,
J'avour que je ne comprends pas vraiment ce que tu me dis... C'est quoi FOREIGN KEY ?

Hors ligne

#6 15-11-2011 12:53:23

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

Re : Données incomplètes dans le résultat de ma requête

Sq78 a écrit :

Bonjour,
J'avour que je ne comprends pas vraiment ce que tu me dis

Ça, ça ne me surprends pas

Sq78 a écrit :

... C'est quoi FOREIGN KEY ?

C'est ça.
Et voilà pourquoi c'est important.


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