Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2008, 13h03   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 4
Points : 1
Points : 1
Par défaut ORA-01427: single-row subquery returns more than one row

Bonjour,
Je n'arrive pas à mettre à jour une table:
Code :
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
len_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 13h20   #2
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
si le select ramène plusieurs lignes comment voulez-vous faire rentrer les n lignes dans une seule valeur de ORDRE ?
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 14h01   #3
Invité de passage
 
Inscription : janvier 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 4
Points : 1
Points : 1
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.
len_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 14h04   #4
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 483
Points : 1 483
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 ...
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 14h16   #5
Invité de passage
 
Inscription : janvier 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 4
Points : 1
Points : 1
Non justement, celle-ci par exemple fonctionne

Code :
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 :
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
??????
len_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2008, 10h07   #6
Invité de passage
 
Inscription : janvier 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 4
Points : 1
Points : 1
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.
len_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h19.


 
 
 
 
Partenaires

Hébergement Web