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 :

Requête Update avec jointure


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Requête Update avec jointure
    Bonjour à tous,

    Comment, d'après vous, puis-je traduire, la requête SQL suivante sans utiliser "inner join".
    "Les vendeurs dont le CA est inférieur à 500 000 € en janvier voient leur % sur CA passer à 2.5 %"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE (Vendeur INNER JOIN Ventes ON Vendeur.Num_vendeur=Ventes.Num_vendeur) 
    INNER JOIN mois ON Mois.Num_mois=ventes.Num_mois SET pourcentage_sur_CA = 0.025
    WHERE CA_réalisé< 500000 AND nom_mois="janvier";
    Ma table vendeur comprend (num_vendeur, nom-vendeur etc... et pourcentage_sur_CA) clé primaire num_vendeur.
    Ma table Ventes comprend (num_mois, num_vendeur, CA_réalisé)clé primaire : num_mois num_vendeur
    Ma table Mois comprend (num_mois, nom_mois) clé primaire : num_mois

    Merci de votre aide.

    Maph1

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Dans ton cas, il faut utiliser EXISTS pour effectuer une restriction sur la table Vendeur qui doit être mise à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    UPDATE  Vendeur 
    SET     Pourcentage_Sur_Ca = 0.025
    WHERE   EXISTS    
            (   SELECT  1
                FROM    Ventes 
                    INNER JOIN 
                        Mois 
                        ON  Mois.Num_Mois = Ventes.Num_Mois
                WHERE   Vendeur.Num_Vendeur=Ventes.Num_Vendeur
                    AND Ventes.Ca_Réalisé < 500000 
                    AND Mois.Nom_Mois = "janvier"
            )
    ;

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Je te remercie pour ta réponse.

    J'ai un autre petit souci, je n'arrive pas à voir ce qui cloche dans la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    UPDATE VENDEUR SET Fixe = 1000
     WHERE EXISTS 
    (SELECT * 
    from vendeur, secteur 
    where vendeur.Num_Secteur=Secteur.Num_Secteur 
    and Vendeur.Ancienneté>3 and Secteur.Nom_Secteur="est");
    En effet, au lieu de modifier 2 enregistrements, tous les enregistrements sont modifiés, la sous-requête fonctionne pourtant correctement et retient bien deux enregistrements. Qu'ai-je oublié ?

    Merci d'avance de votre aide.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Apparemment, tu as mal compris l'utilisation de EXISTS avec une sous-requête corrélée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE VENDEUR 
    SET Fixe = 1000
     WHERE EXISTS 
    (SELECT * 
    from secteur 
    where vendeur.Num_Secteur=Secteur.Num_Secteur 
    and Secteur.Nom_Secteur="est") 
    and Vendeur.Ancienneté>3 ;

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Super merci beaucoup ! J'ai compris mon erreur.

Discussions similaires

  1. [MySQL-5.1] Requête UPDATE avec jointure
    Par transistor49 dans le forum Requêtes
    Réponses: 4
    Dernier message: 06/05/2014, 22h43
  2. Requête update avec jointure
    Par wolfdream dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/03/2011, 10h19
  3. Réponses: 3
    Dernier message: 25/05/2009, 17h11
  4. Requête UPDATE avec jointure
    Par petburn dans le forum SQL
    Réponses: 7
    Dernier message: 30/07/2007, 14h22
  5. Requete update avec jointure d'une requête
    Par bart64 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 28/05/2007, 20h31

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