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

Requêtes PostgreSQL Discussion :

Jointure dans un update


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut Jointure dans un update
    Bonjour, j'aurais aime savoir si il etait possible da faire une jointure dans un Update avec postgres.

    J'ai essaye et je n'y arrive pas :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    UPDATE activite A , liaison_activ_mag   L
    SET L.id_activite = @newid  
    WHERE A.idfournisseur = 14 
    AND L.idactiv = A.id_activite
    AND A.id_typact = 3 
    AND (A.datedeb BETWEEN '2007-10-12 00:00:00' AND '2007-10-20 00:00:00')
     
    ********** Erreur **********
     
    ERROR: syntax error at or near ","
    État SQL :42601
    Caractère : 19

    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
    UPDATE activite A 
    INNER JOIN liaison_activ_mag L ON L.idactiv = A.id_activite 
    SET L.id_activite = @newid  
    WHERE A.idfournisseur = 14 
    AND A.id_typact = 3 
    AND (A.datedeb BETWEEN '2007-10-12 00:00:00' AND '2007-10-20 00:00:00')
     
    ERROR:  syntax error at or near "INNER"
    LINE 2: INNER JOIN liaison_activ_mag L ON L.idactiv = A.id_activite 
            ^
     
    ********** Erreur **********
     
    ERROR: syntax error at or near "INNER"
    État SQL :42601
    Caractère : 20





    Merci

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Ne souhaiterais-tu pas faire ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE liaison_activ_mag SET idactiv=@newid WHERE idactiv=@ancienid
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE liaison_activ_mag, activite SET liaison_activ_mag.idactiv=activite.id_activite WHERE liaison_activ_mag.id=activite.id_activite

  3. #3
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut
    Bonjour,

    Merci de la reponse
    Mias ta deuxieme proposition renvoye une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ERROR:  syntax error at or near ","
    LINE 1: UPDATE liaison_activ_mag, activite SET liaison_activ_mag.ida...
                                    ^
     
    ********** Erreur **********
     
    ERROR: syntax error at or near ","
    État SQL :42601
    Caractère : 25

    Sinon ce que tu proposes ne correspond pas a ce que je souhaite faire. Mais bon si deja j'arrive a faire marcher une jointure dans une requete update apres j'arriverais je pense a me debrouiller.



    Sinon pour info.
    En fait j'ai disons 100 activites (table activite) et 100 liaison d'activite (table liaison activite).
    Mon but serait de n'avoir qu'une seule activite et 100 liaisons d'activite toute lie a cette activite unique.

    Le probleme c'est que pour regrouper mes activites je dois le faire par semaine depuis 2006 d ou mondate between

    J'aurais aime le faire en un seul passage.
    Apres forcement je peux faire mon test pour chaque activite mais bon j'ai plusieurs dizaine de millleir de lignes... :s

  4. #4
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut
    Bon cette requete marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    UPDATE liaison_activ_mag
    SET idactiv  = 586  
    WHERE idactiv IN (
    	SELECT id_activite
            FROM activite
            WHERE idfournisseur = 14
            AND id_typact = 3
            AND (datedeb BETWEEN '2007-10-12 00:00:00' AND '2007-10-20 00:00:00')
    )

Discussions similaires

  1. Jointure dans un UPDATE
    Par CinePhil dans le forum SQL
    Réponses: 4
    Dernier message: 30/01/2012, 22h01
  2. Utiliser la jointure dans l'instruction update
    Par younes86 dans le forum SQL
    Réponses: 11
    Dernier message: 22/01/2010, 15h56
  3. [Oracle] Faire des jointures dans un update
    Par romaintaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/06/2009, 16h01
  4. Problème dans un UPDATE avec jointure
    Par seblem dans le forum Langage SQL
    Réponses: 1
    Dernier message: 05/03/2008, 11h26
  5. GROUP BY et HAVING dans un UPDATE
    Par MashiMaro dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/08/2003, 08h03

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