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

MS SQL Server Discussion :

Problème requêtes SELECT et UPDATE !


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Problème requêtes SELECT et UPDATE !
    Bonjour tout le monde ^^
    je voulais vous demander de l'aide à propos d'une requête SQL. En fait, je veux transmettre le résultat d'une requête SELECT à une autre requête UPDATE. Comment procéder ?

    Voilà mes 2 requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT c.Code_commande, c.Code_employé, c.Code_article, c.Date_commande, c.Quantité, c.Etat 
    FROM Commande c,Article a 
    WHERE (c.Code_article = a.Code_article) 
    AND (c.Quantité >= a.Qte) 
    AND (c.Etat != 'Validée')
    et transmettre son résultat à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Commande SET Etat='Validée'

  2. #2
    Membre actif
    Avatar de SQL_EVAN
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2011
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 161
    Points : 245
    Points
    245
    Par défaut
    Alors je connais pas du tout votre schéma mais logiquement ce que vous voulez faire est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    UPDATE Commande
    SET Etat = 'Validée'
    FROM Commande c
    JOIN Article a
    	ON c.Code_article = a.Code_article
    WHERE c.Quantité >= a.Qte
    AND c.Etat <> 'Validée'

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    MERCI beaucoup evanbarke ! ça marche !!

    En fait, j'avais essayé d'utiliser une autre solution, celle d'une vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE VIEW vwCommande AS 
    SELECT c.Code_commande, c.Code_employé, c.Code_article, c.Date_commande, c.Quantité, c.Etat 
    FROM Commande c,Article a 
    WHERE ((c.Code_article = a.Code_article) AND (c.Quantité <= a.Qte) AND (c.Etat IS NULL OR c.Etat != 'Validée'));
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE vwCommande SET Etat='Validée';
    puis


  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Excusez-moi, mais il me reste un petit problème d'affichage (SELECT).
    En fait, dans mon application, j'ai 2 DataGridView : la 1ère est titulée "Commandes Reçues" et la 2ème "Commandes validées".
    Votre 1ère requête marche à merveille pour la mise à jour de ma table COMMANDE. Le problème parvient lorsque je veux afficher dans la 2ème DataGridView seulement les nouvelles commandes validées (ceux parmi qui sont affichées dans la 1ère DataGridView), et non tous les commandes validées de la table COMMANDE (l'historique).

    Quelle est la requête SQL pour ne pas afficher tout l'historique de la table COMMANDE ayant comme Etat "Validée" ??

    (je développe une application Windows avec C#)

  5. #5
    Membre actif
    Avatar de SQL_EVAN
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2011
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 161
    Points : 245
    Points
    245
    Par défaut
    Je suis pas certain d'avoir bien compris le besoin mais vous pouvez essayer la clause OUTPUT pour afficher que les lignes mises à jour dans la même transaction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    UPDATE Commande
    SET Etat = 'Validée'
    OUTPUT  INSERTED.*
    FROM Commande c
    JOIN Article a
    	ON c.Code_article = a.Code_article
    WHERE c.Quantité >= a.Qte
    AND c.Etat <> 'Validée'
    Et si vous voulez afficher les données avec la mise à jour il suffit de mettre OUTPUT DELETED.*

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    MERCI BEAUCOUP cher evanbarke ! Votre aide m'a été très précieux !

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    P.S : " Ceci est une suite du même sujet de la discussion "

    Bonsoir chers internautes ^^
    J'ai 2 questions à vous poser svp pour que je puisse modifier la requête ci-dessous :

    1) En fait, je veux mettre à jour la quantité de l'article (dans le stock) après chaque commande validée, càd :

    a.Qte = a.Qte - c.Quantité

    2) Je veux que la validation des commandes soit faite par ordre croissant des dates de commandes (Date_commande). Cela dit, si la quantité de l'article dans le stock est insuffisante après une validation d'une commande X , les autres commandes qui viennent après cette date ne pourront pas être validées.

    Comment procéder ?

    Requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    UPDATE Commande 
    SET Etat = 'Validée' 
    OUTPUT INSERTED.* 
    FROM Commande c
    JOIN Article a 
    ON c.Code_article = a.Code_article 
    WHERE (c.Quantité <= a.Qte) AND (c.Etat IS NULL OR c.Etat != 'Validée');

Discussions similaires

  1. Problème requête SELECT condition WHERE string
    Par Glherbier dans le forum VBA Access
    Réponses: 3
    Dernier message: 27/10/2010, 18h43
  2. SQL Problème requête SELECT
    Par Seth_75 dans le forum Développement
    Réponses: 2
    Dernier message: 30/03/2009, 15h02
  3. Problème requête SELECT ORACLE
    Par vizlebiz dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2008, 16h20
  4. Problème Requête SELECT sur champ texte
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 5
    Dernier message: 02/10/2007, 21h19
  5. [SQL] Problème requête SELECT
    Par dolf13 dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 04/07/2006, 23h54

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