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

SQL Oracle Discussion :

Utiliser la jointure dans l'instruction update


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Par défaut Utiliser la jointure dans l'instruction update
    comment utiliser la jointure ds l instruction update svp aidez moi je veux modifier une table je veux le mettre en relation avec d autre table pour recuperer un donne d un champs
    comme ce code (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    update detailcommande 
    set d.prixtotal=d.quantite*p.prix 
    from detailcommande d,produit p 
    where p.idpr=d.idpr
    ce code ca marche pas

  2. #2
    Membre éclairé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Par défaut
    Si tu alias tes champs, il faut updater l'alias:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    update d
    set d.prixtotal=d.quantite*p.prix 
    from detailcommande d,produit p 
    where p.idpr=d.idpr;
    de plus, je te conseillerais de faire des jointure normalisées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    update d
    set d.prixtotal=d.quantite*p.prix 
    from detailcommande d inner join produit p on p.idpr=d.idpr;
    Bon courage
    juva

  3. #3
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Par défaut
    j ai deja ecrit ce code mais ca marche pas je traveil par oracle espress

  4. #4
    Membre éclairé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Par défaut
    tu as quel genre de message d'erreur ?

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il vaut mieux utiliser l'instruction MERGE pour les updates de vue, c'est plus souple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MERGE INTO detailcommande d
    USING produit p
    ON (p.idpr=d.idpr)
    WHEN MATCHED THEN UPDATE
    SET d.prixtotal = d.quantite*p.prix

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Il vaut mieux utiliser l'instruction MERGE pour les updates de vue, c'est plus souple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MERGE INTO detailcommande d
    USING produit p
    ON (p.idpr=d.idpr)
    WHEN MATCHED THEN UPDATE
    SET d.prixtotal = d.quantite*p.prix
    Waldar
    Cette syntaxe "souple" du MERGE est supporté seulement à partir de la version 10g. Et un update peut bien faire l'affaire.

  7. #7
    Membre éclairé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Il vaut mieux utiliser l'instruction MERGE pour les updates de vue, c'est plus souple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MERGE INTO detailcommande d
    USING produit p
    ON (p.idpr=d.idpr)
    WHEN MATCHED THEN UPDATE
    SET d.prixtotal = d.quantite*p.prix
    Peux tu me dire en quoi cela est plus souple (pure curiosité)

  8. #8
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Par défaut
    tu ne peux modifier en utilisant la jointure a partir de sql, il faut passer par plsql.je peux vous donner le code si vous voulez.

    Citation Envoyé par younes86 Voir le message
    comment utiliser la jointure ds l instruction update svp aidez moi je veux modifier une table je veux le mettre en relation avec d autre table pour recuperer un donne d un champs
    comme ce code (
    update detailcommande
    set d.prixtotal=d.quantite*p.prix
    from detailcommande d,produit p
    where p.idpr=d.idpr
    ce code ca marche pas

  9. #9
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par yas10 Voir le message
    tu ne peux modifier en utilisant la jointure a partir de sql, il faut passer par plsql.je peux vous donner le code si vous voulez.
    Vous est sur est certain que ce n’est pas possible sauf PL/SQL ?

Discussions similaires

  1. [WD-2007] Utiliser une variable dans une instruction SQL - publipostage
    Par paulinegue dans le forum VBA Word
    Réponses: 5
    Dernier message: 03/08/2011, 11h10
  2. Erreur dans l'instruction UPDATE
    Par wallas07 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/08/2009, 21h43
  3. Erreur de syntaxe dans l'instruction UPDATE
    Par db48752b dans le forum ASP
    Réponses: 2
    Dernier message: 20/11/2008, 12h49
  4. erreur dans l'instruction update
    Par frankiboy dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/07/2008, 22h42
  5. Réponses: 9
    Dernier message: 12/07/2006, 13h42

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