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

Langage SQL Discussion :

Error: Subquery returns more than 1 row


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Error: Subquery returns more than 1 row
    J'ai un problème sur une requête SQL dans PHP :
    Error: Subquery returns more than 1 row
    La requête :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="SELECT nom_filliere FROM `filliere` WHERE num_filliere = (SELECT num_filliere FROM `trouve` WHERE idc =(SELECT `idc` FROM `inscris` WHERE CNE='$id'))";

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Le message est bien explicite.
    La partie du code concernée est celle-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT num_filliere FROM `trouve` WHERE idc =(SELECT `idc` FROM `inscris` WHERE CNE='$id')
    Vous avez probablement plusieurs tuples retournés pour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `idc` FROM `inscris` WHERE CNE='$id'
    ++

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    bonjour

    comme l'indique mikedavem, la sous-requête renvoie plusieurs lignes.
    et comme la clause WHERE demande un "=", cela sous-entend, une ligne uniquement.
    pour en accepter plusieurs, il faut modifier la clause WHERE par :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      SELECT Nom_Filliere
          FROM ` Filliere `
          WHERE Num_Filliere IN (SELECT Num_Filliere
                                  FROM ` Trouve `
                                  WHERE Idc IN (SELECT ` Idc `
                                                 FROM ` Inscris `
                                                 WHERE Cne = '$id'))

    NB : Pensez à formater la requête avant de l'envoyer, et de la purger de la partie PHP
    Merci d'ajouter un sur les tags qui vous ont aidé

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Tout ceci serait sûrement plus simple et plus performant avec des jointures !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Hé oui ... Par exemple sous SQL Server :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT		F.Nom_Filliere
    FROM		Filliere AS F
    INNER JOIN	Trouve AS T ON F.Num_Filliere = T.Num_Filliere
    INNER JOIN	Inscris AS I ON T.Idc = I.Idc
    WHERE		I.Cne = '$id'
    Et encore y'a pas le nom du schéma ...

    @++

Discussions similaires

  1. #1242 - Subquery returns more than 1 row
    Par Loan26 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 07/11/2007, 20h32
  2. Réponses: 4
    Dernier message: 25/01/2007, 15h02
  3. Réponses: 3
    Dernier message: 08/12/2006, 17h28
  4. ORA-01427: single-row subquery returns more than one row
    Par hadid dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/10/2006, 15h35
  5. Subquery returns more than 1 row
    Par Mathelec dans le forum Requêtes
    Réponses: 12
    Dernier message: 03/08/2006, 14h25

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