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

Langage SQL Discussion :

Update sur une jointure


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 75
    Points
    75
    Par défaut Update sur une jointure
    Bonjour,

    J'aimerai effectuer un update sur la table contrat_produit_ligne à partir de la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select * from contrat o, contrat_produit_ligne c,lignes l,detail_ligne d, detail_ligne d2,tiers t1,tiers t2 
    where o.CTR_DATE_FIN>='25/01/2007' 
    and o.ID_CODE_CONTRAT=c.ID_CODE_CONTRAT 
    and o.ID_NO_AVENANT=c.ID_NO_AVENANT 
    and c.ID_DATE_CESSATION='01/01/1901' 
    and c.ID_NO_LIGNE=l.ID_NO_LIGNE 
    and l.ID_NO_LIGNE=d1.ID_NO_LIGNE 
    and d1.ID_NO_DETAIL_LIGNE=10 
    and l.ID_NO_LIGNE=d2.ID_NO_LIGNE 
    and d2.ID_NO_DETAIL_LIGNE=20 
    and t1.ID_CODE_TIERS=d1.dtl_code_tiers 
    and t2.ID_CODE_TIERS=d2.dtl_code_tiers 
    and (t1.ID_CODE_TIERS in (1, 51, 4) or t2.ID_CODE_TIERS in (1, 51, 4))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update contrat o, contrat_produit_ligne c,lignes l,detail_ligne d, detail_ligne d2,tiers t1,tiers t2 
    set c.ID_DATE='01/01/1901', c.util='moi'
    where ...
    J'obtiens l'erreur "missing set keyword"

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Un UPDATE ne s'effectue que sur une seule table (en tout cas selon la norme SQL) donc merci d'indiquer votre SGBD et de demander à ce que le message soit déplacé dans le forum concerné si celui-ci permet de faire un UPDATE sur plusieurs tables en même temps.

    Enfin à quoi sert la requête SELECT ?
    Elle est utilisée comme sous-requête de la requête UPDATE ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 75
    Points
    75
    Par défaut
    Ma requête est effectué sous Oracle.
    Je me suis servi du select pour trouver les champs que je veux mettre à jour dans mon update mais je n'arrive pas à l'écrire.
    Merci de votre aide.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 64
    Points : 75
    Points
    75
    Par défaut UPDATE complexe
    La mise à jour se fait sur le fichier C

    Il faudrait connaitre la clé unique de ce fichier

    L'idée serait de faire un fichier intermédiaire et de faire une instruction du genre :

    UPDATE C
    SET DATE = 20070101 , UTIL = 'Moi'
    WHERE Clé-unique IN ( SELECT clé-unique FROM FICINTERM )

    Mais si la clé du fichier C comporte plusieurs zones, çà se complique

    FRED

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 75
    Points
    75
    Par défaut
    je suis justement dans ce cas la. la clé comporte 4 champs. Existe t'il une solution?

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Voici un tutoriel pour vous aider à comprendre la syntaxe d'UPDATE : http://sql.developpez.com/sqlaz/dml/#L3
    En plus sous Oracle vous disposez du ROW VALUE CONSTRUCTOR.
    Quelle est votre version d'Oracle ?

    Donnez-nous un jeu d'essai minimal nous permettant de comprendre ce que vous voulez faire au lieu de nous donner des infos au compte goutte.

Discussions similaires

  1. [WD12] Requête UPDATE basée sur une jointure ?
    Par =JBO= dans le forum HyperFileSQL
    Réponses: 7
    Dernier message: 15/01/2010, 15h21
  2. Débutant SQL, problème sur une jointure censée exclure ??
    Par derfatypik dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/06/2005, 15h55
  3. limitation du nombre d'enregistrement sur une jointure
    Par coredump dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/06/2005, 16h13
  4. un count sur une jointure et ca ne fonctionne pas
    Par elbronziero dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/10/2004, 11h23
  5. Problème lors d'un Update sur une date
    Par Nany dans le forum ASP
    Réponses: 3
    Dernier message: 19/05/2004, 22h37

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