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 avec condition sur d'autres tables


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 52
    Points
    52
    Par défaut UPDATE avec condition sur d'autres tables
    J'ai dans la table PRODUIT une liste de produit
    ID Produit Prix TVA1 TVA2
    1 prod1 5€
    2 prod2 10€
    3 prod3 5€ 5.5% 4.2%
    4 ...
    Dans la table CORRESPONDANCE, une table de correspondance entre les produits et le produit parent dont il herite la tva :
    ID_produit ID_Parent
    1 3
    2 3
    4 ...

    J'ai besoin de mettre a jour les 2 tva des produits avec celles du produit "parent"
    Dans l'exemple, le produit 1 et 2 prend les valeurs tva du produit 3 soit 5.5% et 4.2%

    J'ai essayé avec tva1 cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE PRODUIT prod SET
    tva1=(select tva1
    FROM PRODUIT prodbis, CORRESPONDANCE C
    WHERE prodbis.ID=C.IDParent and prod.ID=C.ID_PRODUIT)
    Cela ne fonctionne pas sous Oracle car la sous requete renvoi plusieurs lignes. Avez-vous une solution ?

    Merci pour votre aide

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Petite question : tu veux récupérer la TVA dans la table CORRESPONDANCE et la mettre dans la table PRODUIT ?
    Quelles sont les relations entre tes tables ?

    Essaie le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE PRODUIT prod SET 
    prod.tva1=(select distinct C.tva1 
    FROM CORRESPONDANCE C 
    WHERE prod.ID=C.ID_PRODUIT)
    PS : mets bien tous les alias.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 52
    Points
    52
    Par défaut
    Merci cela fonctionne avec tva1 mais y a t-il une possibilité de mettre a jour dans la meme requete tva1 et tva2 ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 14
    Points : 13
    Points
    13
    Par défaut
    Oui, il te suffit l'ajouter une virgule après la mise à jour de ton champ puis l'autre champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Update TABLE 
    Set CHAMP1 = (Select....), CHAMP2 = (Select....)

    Edit : Attention, j'ai édité mon message précedent car j'avais mis prod.PRODUIT pour le nom de la table au lieu de PRODUIT tout court...

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Avec ORACLE tu peux écrire (Row Value Constructor) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE laTable
    SET (Champ1, Champ2) = (SELECT a, b ...)
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 52
    Points
    52
    Par défaut
    C'est ce que j'ai fait mais cela ne me semble pas super optimisé 2 sous requetes qui en faite sont similaires mais sur deux champs différents

  7. #7
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Regarde au-dessus.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 52
    Points
    52
    Par défaut
    ha oui... super...
    Merci du temps que vous m'avez consacré

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

Discussions similaires

  1. Export d'une table avec condition sur une autre
    Par Hobbi1 dans le forum Import/Export
    Réponses: 2
    Dernier message: 25/03/2010, 14h35
  2. Update avec données d'une autre table
    Par SOPSOU dans le forum Bases de données
    Réponses: 4
    Dernier message: 10/10/2008, 11h58
  3. UPDATE avec SELECT sur la même table
    Par Invité dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/12/2007, 03h39
  4. créer TRIGGER sur 1 table avec liaison sur 2 autre table
    Par shaka84 dans le forum Développement
    Réponses: 2
    Dernier message: 11/04/2006, 11h10
  5. update avec condition sur autre table
    Par allowen dans le forum Langage SQL
    Réponses: 5
    Dernier message: 01/04/2005, 15h02

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