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 :

UPDATE retourne Erreur SQL : ORA-01427


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2014
    Messages : 7
    Par défaut UPDATE retourne Erreur SQL : ORA-01427
    Bonjour,

    Voici l'update

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TIERS set FOUREF=(SELECT distinct G.MATRICULE from GF_TIERS_MATRICULE@DWHPROD G where G.CODTIE=TIERS.CODTIE);
    L'UPDATE ci-dessus retourne l'erreur ORA-01427

    UPDATE TIERS set FOUREF=(SELECT distinct G.MATRICULE from GF_TIERS_MATRICULE@DWHPROD G where G.CODTIE=TIERS.CODTIE)
    Rapport d'erreur -
    Erreur SQL : ORA-01427: sous-requête ramenant un enregistrement de plus d'une ligne
    01427. 00000 - "single-row subquery returns more than one row"
    J'ai bien une seule ligne par matricule dans mon select...

    Est-ce que quelqu'un à une astuce?

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Citation Envoyé par Isabelle7r Voir le message
    J'ai bien une seule ligne par matricule dans mon select...
    Ben non, c'est bien l'origine de l'erreur, en plus vous avez codé un DISTINCT, vous vous attendez donc à plus d'une ligne.
    Que donne la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT G.CODTIE, count(G.MATRICULE), count(distinct G.MATRICULE) 
      from GF_TIERS_MATRICULE@DWHPROD G 
     group by G.CODTIE
    having count(distinct G.MATRICULE) > 1
    Si fonctionnellement prendre le max ou le min a un sens, remplacez distinct G.MATRICULE par max(G.MATRICULE)

  3. #3
    Membre habitué
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2014
    Messages : 7
    Par défaut
    Merci de répondre si rapidement

    La requête retourne 6 lignes avec 2 G.MATRICULE et 2 distinct G.MATRICULE

    en prenant le max(G.MATRICULE) dans l'UPDATE ça fonctionne


    Merci pour la réponse c'est nickel

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/09/2016, 16h50
  2. Erreur SQL : ORA-00001
    Par Maude_84 dans le forum SQL
    Réponses: 4
    Dernier message: 20/03/2014, 08h17
  3. Réponses: 2
    Dernier message: 18/02/2013, 09h01
  4. [O7] Update (simple) mais erreur ORA-01427
    Par akr54 dans le forum SQL
    Réponses: 5
    Dernier message: 23/02/2011, 19h34
  5. Réponses: 6
    Dernier message: 29/11/2005, 19h36

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