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

SQL Oracle Discussion :

Erreur SQL: Sous-interrogation ramenant un enregistrement de plus d'une ligne


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Battosaiii
    Invité(e)
    Par défaut Erreur SQL: Sous-interrogation ramenant un enregistrement de plus d'une ligne
    Bonjour,


    Ma requete sql suivante contient une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    UPDATE document doc
       SET (doc.ID_SIGNATAIRE,doc.ID_SIGNATAIRE_DELEGUE) = (SELECT aut.ID_AUTEUR_IDENTIFIE, aut.ID_OPERATEUR
                        FROM AUTEURS_TROUVES aut
    WHERE doc.AUTEUR=aut.AUTEUR
    AND doc.IDOPERATEUR = aut.ID_OPERATEUR
    AND doc.ID_SIGNATAIRE = aut.ID_OPERATEUR)
     WHERE EXISTS (SELECT NULL
                        FROM AUTEURS_TROUVES aut
    WHERE doc.AUTEUR=aut.AUTEUR
    AND doc.IDOPERATEUR = aut.ID_OPERATEUR
    AND doc.ID_SIGNATAIRE = aut.ID_OPERATEUR);

    Voici l'erreur de ma requête :

    SET (doc.ID_SIGNATAIRE,doc.ID_SIGNATAIRE_DELEGUE) = (SELECT aut.ID_AUTEUR_IDENTIFIE, aut.ID_OPERATEUR
    *
    ERREUR à la ligne 2 :
    ORA-01427: Sous-interrogation ramenant un enregistrement de plus d'une ligne
    Comment faire pour résoudre ce problème ?


    Merci

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    distinct?

  3. #3
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Question : pourquoi cela ramène plusieurs lignes ?

    Si les valeurs sont identiques : DISTINCT (merci Laurent )

    Sinon, il faut que tu précises ta requêtes pour filtrer exactement la valeur qui doit mettre à jour.

    Au passage :
    Je pense que doc.ID_SIGNATAIRE_DELEGUE vaudra déjà aut.ID_OPERATEUR, vu que c'est ton critère de sélection de la sous-requête... je pense que tu peux l'enlever du SET

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE document doc
       SET (doc.ID_SIGNATAIRE) = (SELECT DISTINCT? aut.ID_AUTEUR_IDENTIFIE
                        FROM AUTEURS_TROUVES aut
    WHERE doc.AUTEUR=aut.AUTEUR
    AND doc.IDOPERATEUR = aut.ID_OPERATEUR
    AND doc.ID_SIGNATAIRE = aut.ID_OPERATEUR)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par pacmann Voir le message
    Question : pourquoi cela ramène plusieurs lignes ?
    Parce que tes données font que tu as au moins un cas où tu ramènes plus d'une ligne !

  5. #5
    Battosaiii
    Invité(e)
    Par défaut
    Merci de vos reponses,

    pacmann : Si tu observe ma requete tu verras que ID_SIGNATAIRE_DELEGUE n'est pas utilisé dans ma sous requete. J'ai donc reellement besoin de modifier cette valeur .Commen donc utiliser DISTINCT pour 2 colonnes ?

    Merci

  6. #6
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Ah désolé, j'ai biglé

    Le DISTINCT ne peut s'appliquer que sur toutes les colonnes du SELECT de toutes façons. Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DISTINCT aut.ID_AUTEUR_IDENTIFIE, aut.ID_OPERATEUR

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/05/2013, 09h33
  2. Réponses: 1
    Dernier message: 01/05/2012, 15h25
  3. Réponses: 2
    Dernier message: 03/08/2011, 09h25
  4. Réponses: 1
    Dernier message: 20/04/2011, 12h07
  5. Réponses: 6
    Dernier message: 06/09/2010, 10h55

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