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

  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
    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
    Citation Envoyé par mnitu Voir le message
    Waldar
    Cette syntaxe "souple" du MERGE est supporté seulement à partir de la version 10g. Et un update peut bien faire l'affaire.
    On peut tripoter en 9i pour le faire fonctionner, mais oui la vraie souplesse n'est gagnée qu'à partir de la 10g.

    Citation Envoyé par juvamine Voir le message
    Peux tu me dire en quoi cela est plus souple (pure curiosité)
    Je vous renvoie sur ce très bon article de pacmann :
    http://pacmann.over-blog.com/article...-40373367.html

  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 Waldar Voir le message
    On peut tripoter en 9i pour le faire fonctionner, mais oui la vraie souplesse n'est gagnée qu'à partir de la 10g.
    ...
    Oui, je sait mais un simple update peut faire l'affaire sans tripoter.

  10. #10
    Inactif  

    Homme Profil pro
    Freelance EURL / Business Intelligence ETL
    Inscrit en
    Avril 2005
    Messages
    5 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance EURL / Business Intelligence ETL
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2005
    Messages : 5 878
    Billets dans le blog
    3
    Par défaut
    J'avoue ne jamais avoir connu l'utilisation de ce MERGE, qui m'a l'air sacrément utile avec une stratégie "Update si présent, Insert si absent" (ou toute autre requête assez similaire). Je le note précieusement dans un neurone de libre.

    Maintenant vis-à-vis du problème de younes86, j'ignore si cela l'aide beaucoup, il a l'air de vouloir faire un update tout-à-fait normal. Toujours est-il que younes86, c'est super que tu nous donnes la requête (qui plus est claire), mais bon une version d'Oracle et le message d'erreur (ORA-xxxxx) est tout aussi utile...

    Parce que l'update peut foirer pour plein d'autres raisons (la requête ne ramène pas de produit correspondant de ta table Produit... ou alors en ramène plusieurs et ne sait pas quelle valeur choisir... ou alors ça peut être une erreur de syntaxe... ou autre)
    - So.... what exactly is preventing us from doing this?
    - Geometry.
    - Just ignore it !!
    ****
    "The longer he lived, the more he realized that nothing was simple and little was true" A clash of Kings, George R. R. Martin.
    ***
    Quand arrivera l'apocalypse, il restera deux types d'entreprise : les pompes funèbres et les cabinets d'audit. - zecreator, 21/05/2019

  11. #11
    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

  12. #12
    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