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 :

ORA-01427: single-row subquery returns more than one row


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut ORA-01427: single-row subquery returns more than one row
    Bonjour,
    Je n'arrive pas à mettre à jour une table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE CLASSIF_TMP
    SET    ORDRE = (SELECT CLASSIFICATION_TAXON_NAME
                    FROM   CLASSIFICATION
                    WHERE  CLASSIFICATION.CLASSIFICATION_CODE IN (SELECT CLASSIFICATION_PARENT_CODE
                                                                  FROM   CLASSIFICATION
                                                                  WHERE  CLASSIFICATION.CLASSIFICATION_TAXON_NAME IN CLASSIF_TMP.FAMILLE)
                           AND CLASSIFICATION.LEVEL_CODE IN9)
    WHERE  ORDRE IS NULL;
    ERREUR :
    ORA-01427: single-row subquery returns more than one row

    Pourtant la requête prise individuellement fonctionne et effectivement renvoie plusieurs lignes. L'Update fonctionne également si j'utilise une autre colonne que FAMILLE dans la table CLASSIF_TMP.

    Quelqu'un pourrait il m'aider?
    D'avance merci

  2. #2
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    si le select ramène plusieurs lignes comment voulez-vous faire rentrer les n lignes dans une seule valeur de ORDRE ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Désolé, je suis béotien en la matière mais pourquoi ORDRE ne devrait il prendre qu'une valeur?
    J'ai utilisé une fonction similaire pour remplir des colonnes de la table CLASSIF_TMP, avec plusieurs valeurs. Jusqu'à présent je n'avais pas ce message d'erreur.

  4. #4
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Citation Envoyé par len_bzh Voir le message
    Jusqu'à présent je n'avais pas ce message d'erreur.
    Parce que jusqu'à présent ton select ne te renvoyait qu'une seule valeur ...
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Non justement, celle-ci par exemple fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE CLASSIF_TMP
    SET    ORDRE = (SELECT CLASSIFICATION_TAXON_NAME
                    FROM   CLASSIFICATION
                    WHERE  CLASSIFICATION.CLASSIFICATION_CODE IN (SELECT CLASSIFICATION_PARENT_CODE
                                                                  FROM   CLASSIFICATION
                                                                  WHERE  CLASSIFICATION.CLASSIFICATION_TAXON_NAME IN CLASSIF_TMP.SOUS_ORDRE)
                           AND CLASSIFICATION.LEVEL_CODE = ‘9)
    WHERE  ORDRE IS NULL;
    alors que le select me renvoie 13 valeurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    CLASSIFICATION_TAXON_NAME
    ----------------------------
    Isopoda
    Tanaidacea
    Foraminiferida
    Ctenostomata
    Hydroidomedusa
    Amphipoda
    Cheilostomata
    Decapoda
    Acariformes
    Pedunculata
    Sessilia
    Heterotardigrada
    Nudibranchia
    ??????

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    D'après vos réponses j' ai fini par en déduire que l'incohérence venait des données et non de la requête. Effectivement il y avait un doublon qui n'avait pas lieu d'être.
    Merci,
    Bonne journée.

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

Discussions similaires

  1. Erreur ORA-01427 single-row subquery returns more than one row
    Par SmileAndFly dans le forum Langage SQL
    Réponses: 10
    Dernier message: 29/08/2008, 15h12
  2. Réponses: 14
    Dernier message: 15/11/2007, 10h22
  3. Réponses: 4
    Dernier message: 25/01/2007, 15h02
  4. Réponses: 3
    Dernier message: 08/12/2006, 17h28
  5. 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

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