PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : PL/pgSQL » problème avec WITH et UPDATE » 25/04/2013 11:59:17

Merci pour ta réaction.

J’y suis finalement parvenu mais de façon incomplète. On suppose que la table t1 dispose d’un champ t1.id et d’un champ t1.c6 que je souhaite mettre à jour en fonction de résultats obtenus via plusieurs requêtes, la dernière s’appelant t7. Cette dernière contient un champ t7.c3 qui est un critère (valeur : 0 à 1) pour réaliser mon UPDATE et un champ t7.c6 qui est en réalité le champ c6 de la table t1. La requête complète devient.

WITH t5 AS (SELECT…..), t6 AS (SELECT …), t7 AS (SELECT …) UPDATE t1 SET c6 = 1 WHERE t7.c3 < 0.5 AND t1.id = t7.id;

Mon problème maintenant, c’est que je souhaite faire plusieurs requêtes UPDATE sur le champ t1.c6 et donc t7.c6 en fonction de différentes valeurs prises par t7.c3 (ex. : c6 = 1 si  c3 <= 0.5 ; c6 = 2 si c3 > 0.5 et C3 <= 0.8 ; c6 = 3 si c3 > 0.8) et au final afficher ma table temporaire t7 (ex. : SELECT * FROM t7) mise à jour. Je vais tenter quelques essais mais si quelqu’un a déjà une suggestion, je suis évidemment preneur. wink

#2 PL/pgSQL » problème avec WITH et UPDATE » 23/04/2013 16:59:46

azery16
Réponses : 2

Bonjour,

Je débute avec Postgresql. J’ai créé 4 tables t1, t2, t3, t4. Je les ai liées ensemble et j’ai fait quelques calculs via des sous requêtes et finalement j’obtiens une table de données t7 dont l’avant dernière colonne s’appelle c5 (type : double precision) et la dernière colonne s’appelle c6 (type : integer). La colonne c6 est en réalité une simple copie de la colonne c6 de la table t1 créée au départ:

WITH t5 AS (SELECT…..), t6 AS (SELECT …), t7 AS (SELECT …) SELECT * FROM t7

J’aimerais maintenant modifier la colonne c6 de ma table temporaire t7 (ou la colonne c6 de ma table t1) en fonction d’un critère (critère = c5 < 0.5).

J’ai essayé ceci :

WITH t5 AS (SELECT…..), t6 AS (SELECT …), t7 AS (SELECT …) UPDATE t7 SET c6 = 1 WHERE c3 < 0.5

Et des variantes. Sans résultats. Message : la relation t7 n’existe pas.

Quelqu’un aurait-il une suggestion ? Merci.

Pied de page des forums

Propulsé par FluxBB