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

PostgreSQL Discussion :

UPDATE+max= Incompatibilité?


Sujet :

PostgreSQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 89
    Points : 70
    Points
    70
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 89
    Points : 70
    Points
    70
    Par défaut solution trouvée
    si jamais ca interesse du monde voila la solution que j'ai finalement trouvé:

    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
    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;

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

Discussions similaires

  1. Requete update avec sous requete et max en jointure
    Par youyoupapayou dans le forum Langage SQL
    Réponses: 6
    Dernier message: 27/08/2009, 16h19
  2. Incompatibilité de type Requete sql UPDATE
    Par moilou2 dans le forum VBA Access
    Réponses: 5
    Dernier message: 15/07/2008, 16h49
  3. Problème Update avec Max.
    Par Kloun dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2007, 14h06
  4. UPDATE avec une valeur MAX
    Par Bobtop dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/06/2006, 12h08
  5. Update Max
    Par sacrejohn dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/12/2005, 17h55

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