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 :

Plusieurs lignes pour une sous-requête (erreur #1242)


Sujet :

Langage SQL

  1. #1
    Membre averti
    Avatar de Sieldev
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 259
    Points : 353
    Points
    353
    Par défaut Plusieurs lignes pour une sous-requête (erreur #1242)
    Salut,
    J'ai deux tables dans ma base comme ceci:
    categorie(NumCategorie, NomCategorie)
    detenir(Numcategorie_Mere#, NumCategorie_Fille#)

    Si je fais cette requête ca m'affiche bien le numero, le nom de la categorie et ses sous-categories (categorie fille):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select NumCategorie, NomCategorie, NumCategorie_Fille FROM categorie INNER JOIN detenir ON categorie.NumCategorie = detenir.NumCategorie_Mere
    Cependant je veux que le nom des sous-categories s'affichent et non pas leurs numero, pour cela j'ai fait cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT NumCategorie, NomCategorie, (SELECT NomCategorie FROM categorie 
    WHERE NumCategorie IN (SELECT detenir.NumCategorie_Fille FROM detenir INNER 
    JOIN categorie AS categorie1 ON detenir.NumCategorie_Mere = categorie1.NumCategorie)) AS sousCategorie FROM categorie
    Mais ca me renvoie l'erreur #1242 - Subquery returns more than 1 row

    Avez vous une idée de comment je pourrai obtenir le nom des sous-categories et non pas leurs numero?

  2. #2
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Que donne cette requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select c1.numcategorie, c2.nomcategorie, d1.numcategoriefille, c2.nomcategorie
    from categorie c1, categorie c2, detenir d1
    where c1.numcategorie=d1.numcategoriemere
    and c2.numcategorie=d1.numcategoriefille
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

  3. #3
    Membre averti
    Avatar de Sieldev
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 259
    Points : 353
    Points
    353
    Par défaut
    Merci c'etait presque ça, il fallait juste changer deux choses pour avoir ce que je voulais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT c1.numcategorie, c1.nomcategorie,  c2.nomcategorie
    FROM categorie c1, categorie c2, detenir d1
    WHERE c1.numcategorie=d1.numcategorie_mere
    AND c2.numcategorie=d1.numcategorie_fille
    Je ne savais pas que l'on pouvais faire ça, trés pratique lorsqu'on a des réflexives.
    Peux tu m'expliquer concrétement ce que ca permet de faire d'ajouter des sortes d'allias sur les tables? Comme pour c1 et c2?

  4. #4
    Membre averti Avatar de AL1986
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    434
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 434
    Points : 441
    Points
    441
    Par défaut
    Citation Envoyé par Sieldev Voir le message
    Peux tu m'expliquer concrétement ce que ca permet de faire d'ajouter des sortes d'allias sur les tables? Comme pour c1 et c2?
    Généralement, je trouve que le fait de mettre des alias rend la requête plus compréhensible et plus lisible.
    Sinon, par exemple dans ton cas (comme dans d'autres), t'es amené à selectionner deux fois le nomcatégorie mais avec des contraintes différentes sur numcatégorie. Il est impossible de le faire sans alias.
    Etre ou ne pas être, telle est la question sinusoïdale de l'anachorète hypocondriaque et vice et versa .
    Bonsai monsieur, bonsai madame, vous avez gagnez un milliard de degrés au soleil .
    There is no cure for stupidity (ou pas ).

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

Discussions similaires

  1. Insérer plusieurs lignes avec une seule requête
    Par kyuuse1 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/06/2013, 09h06
  2. ajouter plusieurs lignes pour une personne
    Par frommage dans le forum VBA Access
    Réponses: 8
    Dernier message: 21/11/2012, 04h18
  3. Requête pour modifier plusieurs lignes d'une colonne
    Par nvit24 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/08/2011, 00h42
  4. [MySQL] Sélection de plusieurs lignes en une requête
    Par kalash_jako dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/05/2006, 19h43
  5. Ramener plusieurs champs dans une sous requête...
    Par David.V dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/01/2005, 07h54

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