|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Étudiant Inscription : mai 2011 Messages : 4 ![]() |
Bonjour
J'ai plusieurs requêtes à faire sur une base de données Oracle (logique vu la catégorie du forum me diriez-vous) ; j'ai réussi à traiter toutes les requêtes sauf une où je sèche un peu. Je vais essayer de syntétiser la base pour vous expliquer le problème. Le but du jeu est de trouver des personnes ayant des tâches incompatibles. Il y a d'abord une table où il y a des actions faites par des personnes, de structure : Code :
IdPersonne - code_secteur - action - blabla Enfin, les tâches incompatibles sont renseignées dans une table sans hiérarchie (les codes tache sont des numéros) de la structure : Donc il faut que j'utilise ces tables là pour déterminer les personnes possédant des taches incompatibles. Je suis capable de récupérer les informations sur les personnes possédant des tâches qui sont répertoriées dans la table "tâche incompatible" mais je ne sais pas comment lier ça pour obtenir les personnes ayant des tâches incompatible. Eventuellement, il est possible de retoucher les tables "identifiant tâche" et "tâche incompatibles" mais je n'ai pas d'idée pour une autre organisation. |
|
|
00
|
|
|
#2 | |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
Citation:
|
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Étudiant Inscription : mai 2011 Messages : 4 ![]() |
Non, je me suis mal exprimé. Voici un exemple de ce qu'il pourrait y avoir :
- Dans la table des actions : toto01 -- rdc -- technicien de surface toto01 -- rdc -- inspecteur propreté tata02 -- lv1 -- agent expert toto01 -- lv1 -- technicien de surface toto01 -- lv1 -- inspecteur propreté titi003 -- rdc -- secrétaire - Dans la table des tâches : rdc --- technicien de surface -- 1 rdc --- inspecteur propreté -- 2 lv1 --- agent expert -- 3 lv1 --- technicien de surface -- 4 lv1 --- inspecteur propreté -- 5 rdc --- agent expert -- 6 - Dans la table des tâches incompatibles 1 -- 2 4 -- 5 3 -- 8 En fait, je suis capable de récupérer les personnes possédant au moins une tâche potentiellement incompatible (en gros, si la tâche se trouve dans n'importe quelle colonne de la table "tâches incompatibles") mais après je ne trouve pas comment faire la liaison pour voir s'il possède aussi la tâche incompatible qui est liée. En gros, pour l'instant ma requête ramène comme personne toto01 et tata02 alors qu'il faudrait uniquement toto01 comme résultat. Je ne sais pas si c'est plus clair comme ça. |
|
|
00
|
|
|
#4 |
![]() ![]() |
Bonjour,
Utilises la clause Where Exists, quelque chose du genre : Code :
SELECT DISTINCT nom FROM (SELECT nom, tache FROM jointure1 WHERE EXISTS (SELECT nom, tache FROM jointure2 WHERE jointure1.nom=jointure2.nom AND jointure1.tache<>jointure2.tache)) Ce que j'ai appelé jointure correspond à la même requête qui récupère le nom de la personne et la tâche incompatible.
__________________
Cordialement, Christophe Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche |
|
|
00
|
|
|
#5 | ||
|
Invité de passage
![]() Étudiant Inscription : mai 2011 Messages : 4 ![]() |
Merci pour l'idée de prendre comme table le résultat de ma requête de sélection, ça m'a débloqué et je pense avoir trouvé la bonne solution.
Pour ceux que ça intéresse, ma requête est de la forme : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com