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 :

Problème avec la condition WHERE


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de lionel86500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Points : 214
    Points
    214
    Par défaut Problème avec la condition WHERE
    Bonjour,

    Je souhaite dans une requête SQL avoir le résultat uniquement des commandes dont au moins un article n'est pas livré.

    Voici un exemple avec un extrait :

    Table CDE (commande)
    - NUMCDE (no commande)
    - DTCDE (date de la commande)

    Table LIG (ligne de commande)
    - NUMCDE (no commande, lien entre CDE et LIG)
    - CODART (code article)
    - QTEVTE (quantité livré)
    - LIVRE (article livré ou non O ou N)

    Données des tables
    CDE
    - 100 , 12/03/2017
    - 101 , 13/03/2017
    - 102 , 14/03/2017
    - 103 , 14/03/2017
    - 104 , 15/03/2017
    - 105 , 15/03/2017
    LIG
    - 100 , ABC , 1 , O
    - 101 , ABC , 1 , N
    - 102 , DEF , 2 , O
    - 102 , GHI , 1 , N
    - 103 , DEF , 1 , O
    - 104 , ABC , 1 , N
    - 104 , JKL , 3 , N
    - 105 , ABC , 1 , O
    - 105 , JKL , 3 , O

    Dans cet exemple, je souhaite en résultat le numéro de commande de la table CDE
    101
    102
    104

    C'est au niveau du WHERE que je n'arrive pas à obtenir mon résultat.

    Merci d'avance de votre aide
    Lionel

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Pour moi il suffit de faire une jointure entre les deux tables, et de filtrer les lignes avec LIVRE = N.
    J'ajouterai un DISTINCT dans le SELECT, pour ne pas voir arriver plusieurs fois une même commande si plusieurs lignes ne sont pas livrées.

    Tatayo.

  3. #3
    Membre actif Avatar de lionel86500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    merci de cette information,

    mais dans le cas ou je souhaite avoirs les commandes dont tous les articles ne sont pas livrés, cette fonction ne fonctionne pas.
    Lionel

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT *
    FROM   CDE AS C
    WHERE  EXISTS(SELECT *
                  FROM   LIG AS L
                  WHERE  C.NUMCDE  = L.NUMCDE 
                    AND  LIVRE = 'O')
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Ca dépend de ce que tu entends par "dont tous les articles ne sont pas livrés".
    Dont certains articles ne sont pas livrés ?
    Dont aucun article n'est livré ?
    Dans le premier cas la requête fonctionne, puisqu'elle renvoie les commandes dont au moins une ligne n'est pas livrée, et dans le deuxième cas je dirai que si la recherche change, la requête change...
    Ici, il faut chercher les commandes pour lesquelles il n'existe pas de ligne livré.
    Ce genre de demande revient assez régulièrement, je te propose de faire une petite recherche dans le forum, tu devrais trouver ton bonheur.

    Tatayo.

  6. #6
    Membre actif Avatar de lionel86500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Points : 214
    Points
    214
    Par défaut
    Bonsoir,

    Merci à tous les deux.

    Je vais chercher un peu sur le net, car le cas ou je ne veux seulement les commandes ou aucun article n'est livré n'est pas simple.

    Merci

    Lionel
    Lionel

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Un début de piste (après tout, c'est bientôt le week-end):
    NOT EXISTS, NOT IN, LEFT OUTER JOIN...

    Tatayo.

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

Discussions similaires

  1. export docmd.OutputTo avec une condition Where
    Par pifou25 dans le forum VBA Access
    Réponses: 5
    Dernier message: 28/01/2008, 12h23
  2. Problème avec les conditions ''sous-ensemble d'un tableau''
    Par djangossoul dans le forum LabVIEW
    Réponses: 2
    Dernier message: 07/06/2007, 12h23
  3. [Debutant/MySQL] Problème avec AS et Where
    Par kei-kun41 dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/01/2007, 12h44
  4. Problème avec une condition
    Par ghan77 dans le forum Débuter
    Réponses: 2
    Dernier message: 16/12/2005, 16h18
  5. Problème avec UNION et WHERE
    Par portu dans le forum Langage SQL
    Réponses: 13
    Dernier message: 20/04/2005, 11h29

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