OVH Cloud OVH Cloud

fonction MINUS

2 réponses
Avatar
rafael
Bonjour à tous !
Je dispose d'une base de données sous access 2003 me donnant par
employés la liste de carrieres.
Par la suite, je désire avoir la liste des absences de chaque carriere.
Je souhaite afficher toutes les carrieres qui ne sont pas terminées
et/ou qui ont été terminées pendant une année qui sera saisie.
Je pensais donc prendre toutes les carrieres, auxquelles je soustraie
toutes les carrieres dont l'année de la date de sortie est inférieure à la
date saisie.
J'ai essayé avec MINUS, mais à priori, cette fonction ne fonctionne pas
sous access 2003.
Voici ma requete :
SELECT Employe.Employe_Num, Employe.Employe_Nom_Patronymique,
Employe.Employe_Prenom, Carriere.Carriere_Entite,
Carriere.Carriere_Date_Sortie
FROM Employe INNER JOIN Carriere ON Employe.Employe_Num =
Carriere.Carriere_Employe_Num
minus (
SELECT Employe.Employe_Num, Employe.Employe_Nom_Patronymique,
Employe.Employe_Prenom, Carriere.Carriere_Entite,
Carriere.Carriere_Date_Sortie
FROM Employe INNER JOIN Carriere ON Employe.Employe_Num =
Carriere.Carriere_Employe_Num
where YEAR(Carriere.Carriere_Date_Sortie)< [saisissez votre année]);

Quelqu'un connaît-il une solution me permettant de faire cette
différence entre la totalité des carrieres et celles qui sont déjà terminées
que ce soit avec ou sans MINUS ? ? ?
Merci d'avance ! ! !

2 réponses

Avatar
Eric
Bonjour,

Tu peux faire cela soit en utilisant une sous-requête soit une jointure
externe (Left/Right Join) avec test de l'absence d'Employe.Employe_Num.

Dans le cas d'une sous-requête, ca devrait donner quelque chose comme:

SELECT Employe.Employe_Num, Employe.Employe_Nom_Patronymique,
Employe.Employe_Prenom, Carriere.Carriere_Entite,
Carriere.Carriere_Date_Sortie
FROM Employe INNER JOIN Carriere ON Employe.Employe_Num Carriere.Carriere_Employe_Num
WHERE Employe.Employe_Num NOT IN
(
SELECT Employe.Employe_Num
FROM Employe INNER JOIN Carriere
ON Employe.Employe_Num = Carriere.Carriere_Employe_Num
WHERE YEAR(Carriere.Carriere_Date_Sortie)< [saisissez votre année])
);

Bonjour à tous !
Je dispose d'une base de données sous access 2003 me donnant par
employés la liste de carrieres.
Par la suite, je désire avoir la liste des absences de chaque carriere.
Je souhaite afficher toutes les carrieres qui ne sont pas terminées
et/ou qui ont été terminées pendant une année qui sera saisie.
Je pensais donc prendre toutes les carrieres, auxquelles je soustraie
toutes les carrieres dont l'année de la date de sortie est inférieure à la
date saisie.
J'ai essayé avec MINUS, mais à priori, cette fonction ne fonctionne pas
sous access 2003.
Voici ma requete :
SELECT Employe.Employe_Num, Employe.Employe_Nom_Patronymique,
Employe.Employe_Prenom, Carriere.Carriere_Entite,
Carriere.Carriere_Date_Sortie
FROM Employe INNER JOIN Carriere ON Employe.Employe_Num =
Carriere.Carriere_Employe_Num
minus (
SELECT Employe.Employe_Num, Employe.Employe_Nom_Patronymique,
Employe.Employe_Prenom, Carriere.Carriere_Entite,
Carriere.Carriere_Date_Sortie
FROM Employe INNER JOIN Carriere ON Employe.Employe_Num =
Carriere.Carriere_Employe_Num
where YEAR(Carriere.Carriere_Date_Sortie)< [saisissez votre année]);

Quelqu'un connaît-il une solution me permettant de faire cette
différence entre la totalité des carrieres et celles qui sont déjà terminées
que ce soit avec ou sans MINUS ? ? ?
Merci d'avance ! ! !



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
rafael
Merci pour ta réponse Eric, c'est la requête que je cherchais.


Bonjour,

Tu peux faire cela soit en utilisant une sous-requête soit une jointure
externe (Left/Right Join) avec test de l'absence d'Employe.Employe_Num.

Dans le cas d'une sous-requête, ca devrait donner quelque chose comme:

SELECT Employe.Employe_Num, Employe.Employe_Nom_Patronymique,
Employe.Employe_Prenom, Carriere.Carriere_Entite,
Carriere.Carriere_Date_Sortie
FROM Employe INNER JOIN Carriere ON Employe.Employe_Num > Carriere.Carriere_Employe_Num
WHERE Employe.Employe_Num NOT IN
(
SELECT Employe.Employe_Num
FROM Employe INNER JOIN Carriere
ON Employe.Employe_Num = Carriere.Carriere_Employe_Num
WHERE YEAR(Carriere.Carriere_Date_Sortie)< [saisissez votre année])
);

Bonjour à tous !
Je dispose d'une base de données sous access 2003 me donnant par
employés la liste de carrieres.
Par la suite, je désire avoir la liste des absences de chaque carriere.
Je souhaite afficher toutes les carrieres qui ne sont pas terminées
et/ou qui ont été terminées pendant une année qui sera saisie.
Je pensais donc prendre toutes les carrieres, auxquelles je soustraie
toutes les carrieres dont l'année de la date de sortie est inférieure à la
date saisie.
J'ai essayé avec MINUS, mais à priori, cette fonction ne fonctionne pas
sous access 2003.
Voici ma requete :
SELECT Employe.Employe_Num, Employe.Employe_Nom_Patronymique,
Employe.Employe_Prenom, Carriere.Carriere_Entite,
Carriere.Carriere_Date_Sortie
FROM Employe INNER JOIN Carriere ON Employe.Employe_Num =
Carriere.Carriere_Employe_Num
minus (
SELECT Employe.Employe_Num, Employe.Employe_Nom_Patronymique,
Employe.Employe_Prenom, Carriere.Carriere_Entite,
Carriere.Carriere_Date_Sortie
FROM Employe INNER JOIN Carriere ON Employe.Employe_Num =
Carriere.Carriere_Employe_Num
where YEAR(Carriere.Carriere_Date_Sortie)< [saisissez votre année]);

Quelqu'un connaît-il une solution me permettant de faire cette
différence entre la totalité des carrieres et celles qui sont déjà terminées
que ce soit avec ou sans MINUS ? ? ?
Merci d'avance ! ! !



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr