Bonjour,

Je viens faire appel aux talents de développez.com car je me casse les dents sur une requête sans réussir à la rendre satisfaisante.

Pour expliquer le problème:
1/ J'ai une table affaire qui possède un champs responsable.
2/ La table affaire possède un champs fk_departement. Par une jointure sur departement et sur secteur, on peux connaître le directeur du secteur.
3/ Je possède aussi une table affaire_user qui contient des couples fk_affaire et fk_user. Qui permet d'ouvrir des droits sur l'affaire à un user lambda.

Je veux créer pour un utilisateur donnée un écran de l'ensemble des affaires dont il a accès ( soit il en est le responsable, soit le directeur du secteur de l'affaire, soit cité sur l'affaire).

Voici ce que j'ai pondu comme requête mais elle met de 15 à 30 secondes avant de donner une réponse.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT a.ref
FROM   ( llx_affaire as affaire
LEFT JOIN llx_affaire_user AS au ON affaire.rowid = au.fk_affaire ), llx_departement AS dep, llx_secteur AS secteur
WHERE affaire.fk_departement = dep.rowid
AND dep.secteur = secteur.rowid
AND (
au.fk_user =64
OR a.fk_responsable =64
OR secteur.fk_directeur =64
)
Pour info,
llx_affaire contient 6000 lignes.
llx_affaire_user contient 20 000 lignes.
llx_departement contient 20 lignes.
llx_secteur contient 6 lignes.


Merci d'avance de vos réponses et de votre aide.

Maximilien