IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Sous Requête SQL sous Symfony [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2011
    Messages : 47
    Points : 43
    Points
    43
    Par défaut Sous Requête SQL sous Symfony
    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.

    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
    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
        	$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();
    Le problème est que j'ai le droit a un message d'erreur

    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"
    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 ?

    PS : Je sais table Matchs sans S c'est mieux, mais c'est fait voulus avec un S.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    Je ne suis pas expert mais quand tu fais $this->createQuery('l') sa ne fait pas déjà un ->from('Matchs'); vu qu'il réutilise l'instance?

    Voilà un exemple de requête équivalente :
    Create New Query

    Create new query from Doctrine_Table instance.

    $q = Doctrine::getTable('User')->createQuery('u')
    ->where('u.username = ?', 'jwage');

    Create new query manually

    $q = Doctrine_Query::create()
    ->from('User u')
    ->where('u.username = ?', 'jwage');

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2011
    Messages : 47
    Points : 43
    Points
    43
    Par défaut
    Autant pour moi, je n'ai pas besoin d'inclure résultat dans ma requete sql puisque c'est une relation 1,1...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/10/2013, 16h38
  2. requête sql sous access
    Par jadey dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/08/2006, 21h20
  3. problème sous-requête SQL et order by
    Par aguest dans le forum Requêtes
    Réponses: 10
    Dernier message: 26/12/2005, 23h57
  4. Sous-requêtes SQL
    Par mandrake256 dans le forum WinDev
    Réponses: 6
    Dernier message: 21/06/2005, 10h15
  5. affichage requête sql sous phppgadmin
    Par kerzut dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 25/02/2005, 12h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo