Bonjour à tous,

Je dois faire un UPDATE d'une de mes tables, Cette table "Taxon" est reliée à elle même ainsi qu'à une autre table "Rang taxonomique" qui indique de quel rang est le taxon (ordre or, famille fa, genre ge, espece es, sachant que l'espece est inclut dans le genre qui est inclut dans la famille, elle même inclut dans l'ordre).

"Taxon"
idTaxon (integer)
nom_taxon (character varying 45)
idTaxon_pere (= ref idTaxon) (integer)
idRangTaxonomique (= fa ou ge ou es) (character varying 2)

"Import"
idImport (integer)
espece (character varying 45)
genre (character varying 45)
famille (character varying 45)
ordre (character varying 45)

J'ai rempli la colonne "nom_taxon" de ma table "Taxon" grâce a une table "import" qui pour chaque enregistrement indique son espece, son genre et sa famille. Je dois maintenant mettre à jour ma colonne "id taxon_pere" avec les "idTaxon"

J'ai fait cette requete là (et de nombreuses autres) pour mettre à jour les idTaxon_pere des nom_taxons de rang=fa avec les idTaxon des nom_taxon de rang =or. Sachant qu'un ordre contient plusieurs familles, mais qu'une famille n'est inclut que dans un seul ordre.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
UPDATE "Taxon"
SET "idTaxon_pere"=(SELECT "idTaxon" FROM "Taxon" LEFT JOIN "Import" ON "Taxon"."Nom_taxon" = "Import"."Famille" WHERE "Taxon"."idRang_taxonomique" = 'or')
FROM "Import"
WHERE "Taxon"."idRang_taxonomique" = 'fa' AND "Taxon"."Nom_taxon" = "Import"."Famille";
Il me dit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ERREUR:  Plus d'une ligne renvoyée par une sous-requête utilisée comme une expression
.

On m'a dit qu'il fallait que j'utilise une fonction, je ne sais pas du tout comment faire, j'utilise phpPgAdmin, et je suis débutante.

Désolée pour la tartine j'espere que j'ai été claire ...

et merci d'avance