Bonjour.
Je suis en train de créer un site web entre amis sur le pronostic de match de football (de ligue 1 essentiellement).
J'ai crée mon MCD et j'ai le MPD ci dessous.
Equipe :
equipe_id : identifiant (clé primaire)
equipe_lib : Libellé de l'équipe
equipe_val : booléen pour savoir si l'équipe est bien en ligue 1
equipe_logo : adresse url du logo de l'équipe
Matchs :
matchs_id : identifiant (clé primaire)
equipe_id_dom : clé étrangère de l'équipe qui joue a domicile
equipe_id_ext : clé étrangère de l'équipe qui joue a l'extérieur
matchs_journee : numéro de la journée
matchs_date : date du matchs
matchs_report : booléen pour savoir si le match est reporté
Resultat:
resultat_id : identifiant (clé primaire)
matchs_id : clé étrangère du matchs
resultat_but_ext : nombre de but de l'équipe qui joue a l'extérieur
resultat_but_dom : nombre de but de l'équipe qui joue a domicile
Je souhaite faire le "calendrier" des matchs, avec en prime, le resultat du match quand celui ci est déjà joué.
J'ai donc fait ma requête d'abord sous MySql, elle marche parfaitement.
Sous Symfony cela me donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 select (select resultat_but_dom from resultat where resultat.matchs_id = matchs.matchs_id) as but_dom, (select resultat_but_ext from resultat where resultat.matchs_id = matchs.matchs_id) as but_ext, (select equipe_lib from equipe where equipe.equipe_id = matchs.equipe_id_dom) as equipe_dom, (select equipe_lib from equipe where equipe.equipe_id = matchs.equipe_id_ext) as equipe_ext, (select equipe_logo from equipe where equipe.equipe_id = matchs.equipe_id_dom) as logo_dom, (select equipe_logo from equipe where equipe.equipe_id = matchs.equipe_id_ext) as logo_ext, matchs_journee,matchs_date from matchs
Le problème est que j'ai le droit a un message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 $q = $this->createQuery('l') ->select ('(select resultat_but_dom from resultat where resultat.matchs_id = matchs_id) as but_dom, (select resultat_but_ext from resultat where resultat.matchs_id = matchs_id) as but_ext, (select equipe_lib from equipe where equipe.equipe_id = equipe_id_dom) as equipe_dom, (select equipe_lib from equipe where equipe.equipe_id = equipe_id_ext) as equipe_ext, (select equipe_logo from equipe where equipe.equipe_id = equipe_id_dom) as logo_dom, (select equipe_logo from equipe where equipe.equipe_id = equipe_id_ext) as logo_ext, matchs_journee,matchs_date') ->from('Matchs'); return $q->execute();
Je comprend le message d'erreur, aucun soucis, le seul problème est pour résoudre le problème. Je ne comprend pas pourquoi dans mon FROM de ma requête principale, symfony me redescend mes tables Resultat et Equipe ?SQLSTATE[21000]: Cardinality violation: 1242 Subquery returns more than 1 row. Failing Query: "SELECT m.matchs_id AS m__matchs_id, m.matchs_journee AS m__matchs_journee, m.matchs_date AS m__matchs_date, (select resultat_but_dom from resultat where r.matchs_id = m.matchs_id) AS m__0, (select resultat_but_ext from resultat where r.matchs_id = m.matchs_id) AS m__1, (select equipe_lib from equipe where e.equipe_id = m.equipe_id_dom) AS m__2, (select equipe_lib from equipe where e.equipe_id = m.equipe_id_ext) AS m__3, (select equipe_logo from equipe where e.equipe_id = m.equipe_id_dom) AS m__4, (select equipe_logo from equipe where e.equipe_id = m.equipe_id_ext) AS m__5 FROM matchs m, resultat r, equipe e"
PS : Je sais table Matchs sans S c'est mieux, mais c'est fait voulus avec un S.
Partager