OVH Cloud OVH Cloud

EXCEPT manquant dans Access? (j'apprends...)

3 réponses
Avatar
bilbo
bonjour,
j'apprends à me servir de SQL et j'ai vraiment du mal...
ne trouvant pas l'opérateur de soustraction ensembliste, je cherche à
extraire les doublons (et eux seulement) d'une même colonne.

mes tables d'exercices ont la structure:
-Works (eid*,did*,time) liée à Dept et Emp
-Dept (did*,dname,managerid) liée à Emp
-Emp(eid*,ename,age, salary) liée à Dept

je veux juste les noms du personnel qui est attribué à plus d'un
département. Ca doit se passer en identifiant les doublons Works.eid . Pour
faire l'extraction, je pensais à un truc du genre:

SELECT Works.eid FROM Works
EXCEPT
SELECT DISTINCT W2.eid FROM Works AS W2
mais except et minus ne sont reconnus...
Je vois pas comment faire... quelqu'un aurait-t'il une piste? Des
commentaires?

3 réponses

Avatar
Gafish
Bonjour,

Au niveau syntaxe, à la place du EXCEPT en sql il y a le NOT IN, dans ton
exemple :

SELECT Works.eid FROM Works
WHERE Worls.eid NOT IN
(SELECT DISTINCT W2.eid FROM Works AS W2)

Après pour résoudre ton problème, je ne suis pas sur que cette requete
remplisse son rôle, en revanche un employé affecté à plus d'un département
aura plus d'une ligne dans ta table "Works", une piste : tu peux peut etre
grouper par numéro d'employé, et faire un count sur le nombre de département
par groupe.

Arnaud


"bilbo" a écrit dans le message news:
cho0se$b4q$
bonjour,
j'apprends à me servir de SQL et j'ai vraiment du mal...
ne trouvant pas l'opérateur de soustraction ensembliste, je cherche à
extraire les doublons (et eux seulement) d'une même colonne.

mes tables d'exercices ont la structure:
-Works (eid*,did*,time) liée à Dept et Emp
-Dept (did*,dname,managerid) liée à Emp
-Emp(eid*,ename,age, salary) liée à Dept

je veux juste les noms du personnel qui est attribué à plus d'un
département. Ca doit se passer en identifiant les doublons Works.eid .


Pour
faire l'extraction, je pensais à un truc du genre:

SELECT Works.eid FROM Works
EXCEPT
SELECT DISTINCT W2.eid FROM Works AS W2
mais except et minus ne sont reconnus...
Je vois pas comment faire... quelqu'un aurait-t'il une piste? Des
commentaires?




Avatar
bilbo
"Gafish" a écrit dans le message de
news:
Bonjour,

Au niveau syntaxe, à la place du EXCEPT en sql il y a le NOT IN, dans ton
exemple :

SELECT Works.eid FROM Works
WHERE Worls.eid NOT IN
(SELECT DISTINCT W2.eid FROM Works AS W2)

Après pour résoudre ton problème, je ne suis pas sur que cette requete
remplisse son rôle, en revanche un employé affecté à plus d'un département
aura plus d'une ligne dans ta table "Works", une piste : tu peux peut etre
grouper par numéro d'employé, et faire un count sur le nombre de


département
par groupe.

Arnaud



j'ai fini par trouver:
SELECT distinct e.name
FROM emp AS E, works AS w1,works AS w2
WHERE w1.eid=e.eid AND w2.eid=e.eid AND w1.did<>w2.did.
C'était trop simple pour être vu de suite....je suis vert....

Sinon, comme je ne veux pas lasser les gens de ce newsgroup avec mes
questions à 2 balles : connais-tu des sites pour débutants, genre avec
exemples commentés, ou tables avec exercices et corrigés.... Y a un déclic
qui ne s'est toujours pas fait et je pense qu'il faut que je pratique plus
pour avoir une connaissance effectivement utilisable.
j'en ai trouvé qu'une série sur le Web (dans une des pages de M.Raghu
Ramakrishnan du site de l'université du Wisconsin: www.wisc.edu) en anglais
c'est jouable, mais ça complique un peu. Tu connais rien en français?
Merci pour tout.
bilbo
Avatar
Gafish
Bonjour,

Tu peux aller sur ces sites en francais :
http://sqlpro.developpez.com/indexSQL.html
http://www.commentcamarche.net/sql/sqlintro.php3
Sinon si tu veux faire des DTS avec Sql server tu as ce site la (en anglais)
:
http://www.sqldts.com/

Arnaud


"bilbo" a écrit dans le message news:
4142caf4$0$7614$

"Gafish" a écrit dans le message de
news:
> Bonjour,
>
> Au niveau syntaxe, à la place du EXCEPT en sql il y a le NOT IN, dans


ton
> exemple :
>
> SELECT Works.eid FROM Works
> WHERE Worls.eid NOT IN
> (SELECT DISTINCT W2.eid FROM Works AS W2)
>
> Après pour résoudre ton problème, je ne suis pas sur que cette requete
> remplisse son rôle, en revanche un employé affecté à plus d'un


département
> aura plus d'une ligne dans ta table "Works", une piste : tu peux peut


etre
> grouper par numéro d'employé, et faire un count sur le nombre de
département
> par groupe.
>
> Arnaud
>
j'ai fini par trouver:
SELECT distinct e.name
FROM emp AS E, works AS w1,works AS w2
WHERE w1.eid=e.eid AND w2.eid=e.eid AND w1.did<>w2.did.
C'était trop simple pour être vu de suite....je suis vert....

Sinon, comme je ne veux pas lasser les gens de ce newsgroup avec mes
questions à 2 balles : connais-tu des sites pour débutants, genre avec
exemples commentés, ou tables avec exercices et corrigés.... Y a un déclic
qui ne s'est toujours pas fait et je pense qu'il faut que je pratique plus
pour avoir une connaissance effectivement utilisable.
j'en ai trouvé qu'une série sur le Web (dans une des pages de M.Raghu
Ramakrishnan du site de l'université du Wisconsin: www.wisc.edu) en


anglais
c'est jouable, mais ça complique un peu. Tu connais rien en français?
Merci pour tout.
bilbo