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 :

Requette de non correspondance [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 499
    Points : 304
    Points
    304
    Par défaut Requette de non correspondance
    Bonjour tous le monde

    j'ai une BD avec trois tables
    1-[Entreprises]--->Nom,Adresse,Tlp....
    2-[Salariés]--->Entreprise,Nom,Prénom,Date Naissance....
    3-[Consultations]--->Salarié,Date Visite,Type de visite....

    j'ai voulu faire ressortir tous les salaries qui n'ont pas eux de visite médical, alors j'ai créer cette requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Salariés.Employeur, Salariés.nom, Salariés.Prénom
    FROM Salariés LEFT JOIN Consulatation ON Salariés.[] = Consulatation.[Salarier]
    WHERE (((Consulatation.Salarier) Is Null));
    cette dernière m'affiche le résultat escompté pour l'année en cours, mais le problème est lorsque le salarié fera une visite Exp en 2017 sans la faire en 2016 la requête ci dessus ne le prendra pas en considération

    Alors comment faire -si c'est possible- pour ressortir tous le salariés qui n'ont pas eux de visite par ANNÉE ?!

    Merci beaucoup pour votre aide
    Cordialement

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour,

    C'est pas simple car justement cette année là il n'y a pas de visite donc il faut d'abord un tableau salarie/annees :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom, annee from (salaries inner join (select distinct year(date_visite) as annee from Consulatation)) left join Consulatation c on (year(c.date_visite)=annee and Salariés.[]=c.[Salarier]) where c.date_visite is null
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre averti Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 499
    Points : 304
    Points
    304
    Par défaut
    Bonjour Nico84
    et merci pour vôtre retour, j'ai copié votre code et il m'affiche ERREUR DE SYNTAXE DANS LA CLAUSE FROM
    Aussi je voudrai bien comprendre ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    donc il faut d'abord un tableau salarie/annees
    Cordialement
    A bientot

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    C'est le but de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select nom, annee from (salaries inner join (select distinct year(date_visite) as annee from Consulatation))
    Ensuite il faut filtrer soit avec un left join soit avec where not exists

    Peut etre le from est refusé car il y a inner join sans condition on ? Le select ci-dessus est-il accepté ? Sinon il suffit parfois d'ajouter un alias
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select s.nom, a.annee from (salaries s inner join (select distinct year(date_visite) as annee from Consulatation) a)
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Membre averti Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 499
    Points : 304
    Points
    304
    Par défaut
    Bonjour tous le monde
    Encore merci nico84 pour votre aide, désolé mais ça ne s’exécute pas, je vous envois les images pour être plus claire
    Encore merci pour votre aide
    A bientôt
    Nom : MCD.jpg
Affichages : 97
Taille : 49,2 KoNom : Requete.jpg
Affichages : 102
Taille : 61,5 Ko

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Que donnent les requetes partielles ?
    j'ai pas mis d'accent à salaries
    c'est pas consultation ou lieu de consulatation ?
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  7. #7
    Membre averti Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 499
    Points : 304
    Points
    304
    Par défaut
    Bonsoir nico84

    consulatation , en va laisser comme ça pour le moment.

    pour les deux codes même erreur ERREUR DE SYNTAXE DANS LA CLAUSE FROM malgré le changement de salariés et date_visite par date visite

    Merci pour vôtre patience
    A bientôt

    PS: nico84 si vous voulez je peux vous envoyer une copie de ma base

  8. #8
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Citation Envoyé par jawed Voir le message
    [date visite]
    sinon ça bug

    après essai, inner join nécessite on... mais ça peut s'écrire aussi tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select s.nom, a.annee from salaries s, (select distinct year(date_visite) as annee from Consulatation) a
    ensuite dans le where il faut enlever les lignes pour lesquelles existe une consultation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where not exists (select * from consultation c where year(c.visite)=a.annee and c.n°=s.matricule)
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  9. #9
    Membre averti Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 499
    Points : 304
    Points
    304
    Par défaut
    Bonsoir nico84
    Merci pour votre aide, j'ai saisie votre code comme ceci si j'ai pas faut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT s.nom, a.annee
    FROM salariés AS s, (select distinct year(date_visite) as annee from Consultation)  AS a
    WHERE (((Exists (select * from consultation c where year(c.visite)=a.annee and c.n°=s.matricule))=False));
    il m'affiche 3 boites de dialogue de pour y entrer des paramètres, mais je ne sais pas quoi écrire ??
    1- date_visite
    2- c.visite
    3- s.matricule

    Encore merci et à bientôt
    Cordialement

  10. #10
    Membre averti Avatar de jawed
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 499
    Points : 304
    Points
    304
    Par défaut
    Bonjour tous le monde
    Merci beaucoup nico84, ça marche nickel car j'ai trouvez l'astuce
    Cordialement
    A bientôt

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

Discussions similaires

  1. 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
  2. Réponses: 1
    Dernier message: 28/06/2006, 13h31
  3. Cas spécial de requête de non-correspondance
    Par Floch dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 21/06/2006, 12h19
  4. Requete de non-correspondance
    Par nassu dans le forum Access
    Réponses: 2
    Dernier message: 10/05/2006, 19h28
  5. Extraction de doublons et non correspondance
    Par banker dans le forum Access
    Réponses: 2
    Dernier message: 31/01/2006, 08h52

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