OVH Cloud OVH Cloud

requete complexe

5 réponses
Avatar
reda
Bonjour,
Dans une table, j'ai 5 champs : Nom, Numero Personnel, Numero Responsable,
Vu
avant et Vu apres.
Pour les personnes appartenant au meme etablissement, le champ Numero
Responsable sera = au champ Numero Personnel du responsable. Exemple :
Durand 001 001 Non Non
Dutronc 002 001 Non Oui
Martin 011 011 Non Non
Marin 012 012 Non Non
Je voudrais faire une requete qui me donne la liste des responsables ou les
champs Vu avant et Vu apres = Non pour tous dans le meme etablissement.
Si je fais une requete du genre : SELECT Nom FROM Table WHERE Numero
Personnel =
Numero Responsable AND Vu avant = ' Non ' AND Vu apres = ' Non ', Durand et
Martin vont sortir. Or je ne veux pas de Durand puisque Dutronc est a ' Oui
'
Merci pour votre aide
Reda

5 réponses

Avatar
Thierry
Bonjour,
voici une solution :


SELECT nom FROM table
WHERE numero perso = numero resp
AND vu avant = ' Non ' AND vu apres = ' Non'
AND NOT EXIST
( SELECT * FROM table t2
WHERE t2.numero resp =table.numero resp AND (t2.vu avant = 'Oui'
OR t2.vu avant='Oui' )


"reda" a écrit dans le message de
news:cbv047$bhb$
Bonjour,
Dans une table, j'ai 5 champs : Nom, Numero Personnel, Numero Responsable,
Vu
avant et Vu apres.
Pour les personnes appartenant au meme etablissement, le champ Numero
Responsable sera = au champ Numero Personnel du responsable. Exemple :
Durand 001 001 Non Non
Dutronc 002 001 Non Oui
Martin 011 011 Non Non
Marin 012 012 Non Non
Je voudrais faire une requete qui me donne la liste des responsables ou
les

champs Vu avant et Vu apres = Non pour tous dans le meme etablissement.
Si je fais une requete du genre : SELECT Nom FROM Table WHERE Numero
Personnel > Numero Responsable AND Vu avant = ' Non ' AND Vu apres = ' Non ', Durand
et

Martin vont sortir. Or je ne veux pas de Durand puisque Dutronc est a '
Oui

'
Merci pour votre aide
Reda




Avatar
Thierry
Autre solution :

SELECT t1.numero resp, t1.nom
FROM test t1 LEFT JOIN test t2
ON t1.numero resp = t2.numero resp
AND t2.numero peso <> t2.numero resp
AND (t2.vu avant="Oui" OR t2.vu apres="oui")
WHERE t1.numero_p = t1.numero resp
GROUP BY t1.numero resp, t1.nom
HAVING count(t2.numero perso)=0


"Thierry" a écrit dans le message de
news:
Bonjour,
voici une solution :


SELECT nom FROM table
WHERE numero perso = numero resp
AND vu avant = ' Non ' AND vu apres = ' Non'
AND NOT EXIST
( SELECT * FROM table t2
WHERE t2.numero resp =table.numero resp AND (t2.vu avant 'Oui'
OR t2.vu avant='Oui' )


"reda" a écrit dans le message de
news:cbv047$bhb$
Bonjour,
Dans une table, j'ai 5 champs : Nom, Numero Personnel, Numero
Responsable,


Vu
avant et Vu apres.
Pour les personnes appartenant au meme etablissement, le champ Numero
Responsable sera = au champ Numero Personnel du responsable. Exemple :
Durand 001 001 Non Non
Dutronc 002 001 Non Oui
Martin 011 011 Non Non
Marin 012 012 Non Non
Je voudrais faire une requete qui me donne la liste des responsables ou
les

champs Vu avant et Vu apres = Non pour tous dans le meme etablissement.
Si je fais une requete du genre : SELECT Nom FROM Table WHERE Numero
Personnel > > Numero Responsable AND Vu avant = ' Non ' AND Vu apres = ' Non ', Durand
et

Martin vont sortir. Or je ne veux pas de Durand puisque Dutronc est a '
Oui

'
Merci pour votre aide
Reda








Avatar
reda
Bonjour Thierry,
Je n'ai qu'une seule table. Comment creer la table t2? Que contient-elle ?

--
Use our news server 'news.foorum.com' from anywhere.
More details at: http://nnrpinfo.go.foorum.com/
Avatar
Thierry
T2 n'est qu'un alias de la table intitulé "Table"

En effet, il s'agit d'une equi-jointure, la requête utilisera la même table
2 fois.

"reda" a écrit dans le message de
news:

Bonjour Thierry,
Je n'ai qu'une seule table. Comment creer la table t2? Que contient-elle ?

--
Use our news server 'news.foorum.com' from anywhere.
More details at: http://nnrpinfo.go.foorum.com/


Avatar
Thierry
2 syntaxes possibles pour spécifier un alias de table :

... FROM table AS t2
... FROM table t2

"Thierry" a écrit dans le message de
news:
T2 n'est qu'un alias de la table intitulé "Table"

En effet, il s'agit d'une equi-jointure, la requête utilisera la même
table

2 fois.

"reda" a écrit dans le message de
news:

Bonjour Thierry,
Je n'ai qu'une seule table. Comment creer la table t2? Que contient-elle
?



--
Use our news server 'news.foorum.com' from anywhere.
More details at: http://nnrpinfo.go.foorum.com/