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

Requêtes et SQL. Discussion :

[SQL/Requete][03]Probleme de non correspondance


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut [SQL/Requete][03]Probleme de non correspondance
    Bonjour à tous,

    J'ai tblLot et tblDocument qui lui est liée (par un champ Lot)
    Dans tblDocument j'ai un champ Categorie.
    Je cherche la requete qui me donnera tous les enregistrements de tblLot qui n'ont pas de document associés dont la Categorie est "MANDAT".

    C'est sûrement tout simple mais je cale.

    Merci pour votre attention.

  2. #2
    Membre actif Avatar de Purple Haze
    Profil pro
    Inscrit en
    Février 2007
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 293
    Points : 242
    Points
    242
    Par défaut

    Peut être qu'avec l'opérateur NOT ça peut marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT*
    FROM tbl_lot
    WHERE NOT categorie=mandat

  3. #3
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    Salut brume violette,

    C'est plus compliqué que ça:
    Categorie appartient à la table tblDocument et non à la table tblLot.
    Je veux tous les enregistrements de tblLot qui n'ont pas d'enregistrement (Document) associé de Catégorie "MANDAT".

    Je ne sais pas si je suis plus clair que mon premier exposé...

  4. #4
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Bonjour,

    Je ferais plutot comme ca

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT tblLot.*, tblDocument.categorie
    FROM tblLot LEFT JOIN tblDocument ON tblLot.lot = tblDocument.Lot
    WHERE tblDocument.categorie<>"Mandat";
    Si tu as des champs "Categorie" nuls, il ne te les prendra pas non plus, il faudra écrire:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT tblLot.*, tblDocument.categorie
    FROM tblLot LEFT JOIN tblDocument ON tblLot.lot = tblDocument.Lot
    WHERE tblDocument.categorie Is Null Or tblDocument.categorie<>"Mandat";

    En esperant repondre a ta question !

  5. #5
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    Bonjour timoth,

    Ce n'est toujours pas ce que je veux.
    Tu me propose la requete classique qui renvoie des enregistrements selon des critères d'égalité ou non égalité.

    Je souhaite (hélas j'ai du mal à faire autre chose que de me répéter) avoir les lots qui n'ont aucun documents associés de catégorie "mandat".

  6. #6
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Salut,
    Il y a un assistant requête de non correpondance.
    Lorsque tu es sur l'onglet requête, tu cliques sur nouveau et la tu as quelques assistants

  7. #7
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    Salut,

    L'assistant, que j'avais déjà sollicité, se borne à tester les non correspondance sur les champs de la relation. Par ex les documents de tblDocument dont le champ Lot est null
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tblDocument.Docnum, tblDocument.Lot, tblDocument.Categorie
    FROM tblDocument LEFT JOIN tblLot ON tblDocument.Lot = tblLot.LotID
    WHERE (((tblDocument.Lot) Is Null));
    ou, dans l'autre sens, les lots de tblLot qui n'ont AUCUN document
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tblLot.LotID
    FROM tblLot LEFT JOIN tblDocument ON tblLot.LotID = tblDocument.Lot
    WHERE (((tblDocument.Lot) Is Null));
    Donc, dans le deuxième cas je suis preneur car, si il n'y a aucun document a fortiori il n'y a pas de document de Categorie "mandat", mais je veux aussi les lots qui ont des documents associés dont aucun n'est de categoria "mandat".

  8. #8
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT tblLot.LotId
    FROM tblLot LEFT JOIN tblDocument ON tblLot.LotId = tblDocument.Lot
    WHERE (((tblDocument.Lot) Is Null)) UNION SELECT tblDocument.Lot
    FROM tblDocument INNER JOIN tblLot ON tblDocument.Lot = tblLot.LotId
    WHERE ((Not (tblDocument.Categorie)="mandat"));

  9. #9
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    jp lepetit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT tblLot.LotId FROM tblLot LEFT JOIN tblDocument ON tblLot.LotId = tblDocument.Lot WHERE (((tblDocument.Lot) Is Null)) UNION SELECT tblDocument.LotFROM tblDocument INNER JOIN tblLot ON tblDocument.Lot = tblLot.LotId WHERE ((Not (tblDocument.Categorie)="mandat"));
    Ca me renvoi tout...

  10. #10
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    J'ai pas exactement compris ce que tu voulais

    le système, c'est de faire une première requête de non correspondance
    dans le deuxième cas je suis preneur car, si il n'y a aucun document a fortiori il n'y a pas de document de Categorie "mandat"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tblLot.LotID
    FROM tblLot LEFT JOIN tblDocument ON tblLot.LotID = tblDocument.Lot
    WHERE (((tblDocument.Lot) Is Null));
    puis une deuxième qui te récupère les autres enregistrements
    mais je veux aussi les lots qui ont des documents associés dont aucun n'est de categorie "mandat".
    puis de faire une requête UNION de ces deux requêtes

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    je vois 2 solutions : Une avec une seule requete (pas bien beau !), ou plus standard avec 2 requêtes :

    1) Sélection des lots ayant "mandat"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT lot
    FROM tbldocument
    WHERE categorie="mandat";
    On nomme cette requete <RQ>

    2) Requete qui affiche tous les lots n'ayant aucune catégorie ou des catégories autres que "mandat"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT tbllot.lot
    FROM tbllot LEFT JOIN rq ON tbllot.lot = rq.lot
    WHERE rq.lot Is Null;
    Sauf erreur...

    Cordialement,

    Philippe

  12. #12
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    Bonjour Philippe, re jp lepetit.
    J'ai testé de suite la soluce de philben qui me convient parfaitement.

    Merci à tous

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 17/01/2008, 18h53
  2. [SQL] Requete avec ordre correspondant à la clause WHERE
    Par yobogs dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 10/06/2007, 14h32
  3. [SQL] Requete non fonctionnelle
    Par Romalafrite dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/09/2006, 15h31
  4. Création d'une requête de non correspondance
    Par angélique dans le forum Access
    Réponses: 2
    Dernier message: 18/07/2006, 16h50
  5. Requete de non-correspondance
    Par nassu dans le forum Access
    Réponses: 2
    Dernier message: 10/05/2006, 19h28

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