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 :

Besoin d'aide pour une sous requete


Sujet :

Langage SQL

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 193
    Points : 171
    Points
    171
    Par défaut Besoin d'aide pour une sous requete
    Bonjour !
    Je travail sur Access.
    J'ai une requete qui me renvoie des infos concernant les entreprises qui ont subi un autodiagnostic en 2004 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT T_Entreprise.Num_Ent, T_Entreprise.RaisonSociale_Ent, T_AutoDiagnostic.Num_Entreprise, T_AutoDiagnostic.Date1Visite_AutoDiagnostic
    FROM T_Entreprise, T_AutoDiagnostic
    WHERE T_Entreprise.Num_Ent=T_AutoDiagnostic.Num_Entreprise And (T_AutoDiagnostic.Date1Visite_AutoDiagnostic Between #01/01/2004# And #12/31/2004#);
    Elle marche correctement.
    Mais j'aimerai savoir comment obtenir les infos sur les entreprises qui n'ont pas subi d'autodiagnostic en 2004.
    J'ai essayé avec EXISTS et une sous requete mais je m'emmèle les pinceaux.

    Je remercie d'avance les personnes qui pourront m'éclairer.

  2. #2
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Tu peux faire 1 jointure externe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ... T_Entreprise LEFT OUTER JOIN T_AutoDiagnostic 
    ON T_Entreprise.Num_Ent=T_AutoDiagnostic.Num_Entreprise 
    WHERE ...
    au lieu d'1 equi-jointure.
    Si tu n'est pas familiarisé avec le SQL, tu peux utiliser le schema des relations d'access. Tu peux changer la propriété de la jointure entre 2 tables (par defaut c'est =) par le mode qui cortrespond à ton besoin. C'est pas mal fait.

    A +

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM T_Entreprise a
    WHERE NOT EXISTS (SELECT NULL
                      FROM T_AutoDiagnostic c
                      WHERE a.Num_Ent = c.Num_Entreprise)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM T_Entreprise a LEFT OUTER JOIN T_AutoDiagnostic c ON a.Num_Ent = c.Num_Entreprise
    WHERE c.Num_Entreprise IS NULL

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 193
    Points : 171
    Points
    171
    Par défaut Merci
    En fait je veux avoir la liste des numéros des entreprises de la table T_Entreprise qui n'apparaissent pas dans la table T_AutoDiagnostic.

  5. #5
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Re,

    Alors la 1ere rq de Médiat est la bonne. J'avais compris que tu voulais ttes les entreprises (avec et sans diagnostique) ds le même résultat. Avec 1 jointure externe il faut rajouter une restriction pour ne garder que ceux qui sont null. Ca complique 1 peu ...

    A +

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    J'ai édité le post précédent, avec deux solutions

  7. #7
    Membre habitué

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 193
    Points : 171
    Points
    171
    Par défaut C'est bon
    Merci beaucoup !

    Je savais pas qu'on pouvais faire un "select null",
    donc je ne voyais pas comment faire la jointure entre les tables.

    C'est exactement ce qu'il me fallait, encore merci a vous !

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

Discussions similaires

  1. Besoin d'aide pour une requete SQL
    Par fabris dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/04/2006, 20h27
  2. besoin d'aide pour une requete
    Par Pigoulou dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/02/2006, 20h34
  3. Besoin d'aide pour une requete
    Par Okhotsk dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/11/2005, 16h30
  4. Besoin d'aide pour une requete
    Par jnc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 11h54
  5. Création requete besoin d'aide pour une date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/07/2004, 22h03

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