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 :

Lister articles qui n'apparaissent pas dans une table


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Points : 65
    Points
    65
    Par défaut Lister articles qui n'apparaissent pas dans une table
    Bonjour !

    J'aimerais lister les articles (d'une commande donnée) qui n'ont pas été réceptionnés. Pour cela je dispose de deux tables :

    cdelig (pour les lignes de la commande) et brlig (pour les lignes du bon de réception).

    Dans ces deux tables j'ai les champs nocde et noart.

    Si le couple nocde/noart existant dans cdelig n'est pas dans la table brlig alors cet article n'a pas été réceptionné. Ce sont les articles répondant à cette condition que je voudrais lister avec une requête mais je ne sais pas comment m'y prendre.

    Pourriez-vous éclairer ma modeste lanterne, messieurs dames, svp ?

    Je vous remercie d'avance !

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Faites une jointure externe entre vos deux tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT     cdelig.noart
    FROM       cdelig
    LEFT JOIN  brlig
        ON  brlig.nocde = cdelig.nocde
        AND brlig.noart = cdelig.noart
    WHERE brlig.noart IS NULL

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 788
    Points
    30 788
    Par défaut
    Il y a différentes manières de faire cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    SELECT  cde.*
    FROM    cdelig  cde
    WHERE   NOT EXISTS
            (   SELECT  NULL
                FROM    brlig   bon
                WHERE   bon.nocde   = cde.nocde
                    AND bon.noart   = cde.noart
            )
    ;
    SELECT  cde.*
    FROM    cdelig  cde
    WHERE   (   cde.nocde
            ,   cde.noart
            )   NOT IN
            (   SELECT  bon.nocde
                    ,   bon.noart
                FROM    brlig   bon
            )
    ;
    SELECT  cde.*
    FROM    cdelig  cde
        LEFT JOIN
            brlig   bon
            ON  bon.nocde   = cde.nocde
            AND bon.noart   = cde.noart
    WHERE   bon.nocde   IS NULL
        AND bon.noart   IS NULL
    ;
    A toi de choisir
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Points : 65
    Points
    65
    Par défaut
    Merci à vous !

    @al1_24 : Les deux premières requêtes m'indiquent une erreur de syntaxe mais je vais regarder pourquoi. La bdd est sous informix, peut-être que le formalisme ne lui plaît pas ? Je vais d'abord m'assurer de bien avoir écrit les 2 requêtes.

    Sinon la dernière, qui rejoint celle proposée par aieeeuuuuu, nickel !

    Je vous remercie beaucoup ! Bonne journée !

    Marie

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

Discussions similaires

  1. Chercher un enregistrement qui N'EST PAS dans une table
    Par ZeBandit dans le forum Requêtes
    Réponses: 13
    Dernier message: 05/05/2015, 11h02
  2. Lister les enregistrements qui ne sont pas dans une table
    Par toss.net dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/10/2010, 11h25
  3. obtenir des entrees qui ne sont pas dans une table
    Par firejocker dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 26/12/2007, 23h07
  4. Réponses: 1
    Dernier message: 21/12/2006, 11h17
  5. Réponses: 10
    Dernier message: 15/12/2006, 07h34

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