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 :

[Sous-requête] La requête retourne plusieurs enregistrements


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 28
    Points
    28
    Par défaut [Sous-requête] La requête retourne plusieurs enregistrements
    Bonjour,

    Je cherche une solution a un probleme de sous-requête et malgré mes recherches pour ce probleme qui ne parait pourtant vraiment pas compliqué, je ne trouve rien qui me débloque...
    j'ai fait la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ofnum FROM PUB.SOFA WHERE ofanumenr=(SELECT ofanumenr FROM PUB.SOFB WHERE proref='SF9999RD')
    relativement simple a comprendre. le probleme est que j'ai plusieurs ofanumenr dans SOFB qui ont le proref SF9999RD. du coup, ça me retourne cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La requête retourne plusieurs enregistrements. (7529), SQL state S1000 in SQLExecDirect
    j'ai essayé en faisant cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ofnum FROM PUB.SOFA WHERE ofanumenr IN (SELECT ofanumenr FROM PUB.SOFB WHERE proref='SF9999RD')
    mais j'ai l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Field ofanumenr not found
    je pense pas être sur une mauvaise piste, mais je reste bloqué malgré mes differente recherche...
    Merci d'avance!

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    la 2eme solution est la bonne approche.

    Concernant votre erreur cela veut tout simplement dire que la table PUB.SOFB (ou PUB.SOFA) ne possède pas de colonne ofanumenr.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 28
    Points
    28
    Par défaut
    J'ai supposé que c’était le probleme malgré que je suis sur que les champs ofanumenr existe bien, mais après vérification les 2 tables ont bien l'ofanumenr car les requêtes suivante me retournent bien des résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT ofanumenr FROM PUB.SOFA
    SELECT ofanumenr FROM PUB.SOFB WHERE proref='SF9999RD'

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Quel est votre SGBD ?

    (la syntaxe de votre 2eme requête est bonne, donc soit vous n'avez pas lancé cette requête tel quel soti votre SGBD vous limite)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 46
    Points : 28
    Points
    28
    Par défaut
    J'ai résolu le probleme, qui évidement était bête...
    le probleme venais pas de la requête, mais de l'enregistrement que je cherchais. j'utilisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    odbc_result($resultatsqlProd,"ofanumenr")
    donc quand je fais les requêtes nommé ci dessus, ça marche, mais pour récupérer mon ofnum, il faut évidement que je récupérer ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    odbc_result($resultatsqlProd,"ofnum")
    Merci de votre aide!

  6. #6
    Membre averti
    Avatar de sweetasnz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2012
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 212
    Points : 375
    Points
    375
    Par défaut
    Citation Envoyé par zimeau Voir le message
    j'ai essayé en faisant cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ofnum FROM PUB.SOFA WHERE ofanumenr IN (SELECT ofanumenr FROM PUB.SOFB WHERE proref='SF9999RD')
    mais j'ai l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Field ofanumenr not found
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ofnum FROM PUB.SOFA A WHERE A.ofanumenr IN (SELECT B.ofanumenr FROM PUB.SOFB B WHERE proref='SF9999RD')
    vu qu'il y a "ofanumenr" dans les 2 tables ton SGBD les confond et donc te renvoie en erreur, il faut donc spécifier celui dont tu t'intéresse dans tes clauses (celui de PUB.SOFA ou PUB.SOFB)

  7. #7
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    vu qu'il y a "ofanumenr" dans les 2 tables ton SGBD les confond et donc te renvoie en erreur, il faut donc spécifier celui dont tu t'intéresse dans tes clauses (celui de PUB.SOFA ou PUB.SOFB)
    Non, vu qu'il n'y a qu'une seule table de déclarer dans chaque requête aucune confusion n'est possible et il est par conséquent inutile de préfixer les tables

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

Discussions similaires

  1. tWebService qui retourne plusieurs enregistrements
    Par sqlnoob dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 15/06/2015, 11h24
  2. Réponses: 3
    Dernier message: 29/03/2009, 22h40
  3. Réponses: 3
    Dernier message: 24/01/2009, 16h04
  4. Requête ajout SQL et plusieurs enregistrements
    Par kiki.gaby dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 01/01/2009, 16h44
  5. Procedure stockée retournant plusieurs enregistrements
    Par mystikilla dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 04/11/2008, 10h17

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