Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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 10/05/2004, 15h48   #1
Membre du Club
 
Inscription : mars 2004
Messages : 89
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 89
Points : 59
Points : 59
Par défaut UPDATE+max= Incompatibilité?

Bonjour à tous,

je me retrouve avec pas mal de soucis aux niveau de mes UPDATES et il se trouve qu'il y a un facteur commun à ces blocages.


EXEMPLE:

Code :
1
2
3
4
5
6
UPDATE ONLY articles_tbl
		SET id_article =  articles_tbl.id_deposant || articles_tbl.numero
		FROM articles_tbl AS a, deposants_tbl AS d
		WHERE  a.id_articles=(SELECT max(id_articles) FROM articles_tbl)  AND
		d.id_deposant=a.id_deposant AND
		articles_tbl.id_deposant=a.id_deposant;
Dans ce genre de requêtee la partie "WHERE" aide à choisir les données qui vont être concaténées, soit "articles_tbl.id_deposant || articles_tbl.numero", mais ne permet pas de définir les entrées où l'on veut écrire le résultat de cette concaténation..

Par exemple je voudrais écrire le résultat cette concaténation (soit id_article) "que" dans la derniere entrée de cette table(articles_tbl), comment pourrais-je faire?

Merci
$grm$ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2004, 16h43   #2
Membre du Club
 
Inscription : mars 2004
Messages : 89
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 89
Points : 59
Points : 59
Par défaut solution trouvée

si jamais ca interesse du monde voila la solution que j'ai finalement trouvé:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
'
 
	DECLARE
		checkit record;
		result int4;
		tmpdep int4;
		tmpart int4;
		checkit2 record;
		checkit3 record;
		nombremax int4;
	BEGIN
		result=0;
		nombremax=0;
		FOR checkit2 IN SELECT id_articles FROM articles_tbl LOOP
		nombremax=checkit2.id_articles;
		END LOOP;
 
		SELECT INTO checkit3 * FROM articles_tbl WHERE id_articles=nombremax;
		tmpart=checkit3.id_deposant;
 
		FOR checkit in SELECT * FROM deposants_tbl LOOP
		tmpdep=checkit.id_deposant;
		IF tmpart=tmpdep then
		result=checkit.numero+1;
		END IF;
 
		END LOOP;
 
 
		UPDATE ONLY articles_tbl 
			SET id_article= id_deposant || result
			where id_articles=nombremax;
 
 
 
		return new;
	END;
$grm$ 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 10h22.


 
 
 
 
Partenaires

Hébergement Web