Bonjour,
j'ai une requete ou je voudrais transformer l'union en simple jointure. j'explique le contexte:

j'ai une table ACCESS qui contient des USER
USER appartien à un CLIENT.

les droits pour un LOGIN de consulter les user sont enregistrés dans deux tables:

je dois prendre tous les users de la table USER_RIGHT avec le login_id en paramètre ET TOUS les users du CLIENT de la table CLIENT_LOGIN si lle paramètre ALL = 1.

le shéma
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
ACCESS (ACCESS_ID,USER_ID ..)
USER(USER_ID,CLIENT_ID)
CLIENT(CLIENT_ID,....)
USER_RIGHTS(LOGIN_ID,USER_ID)
CLIENT_LOGIN(LOGIN_ID,CLIENT_ID,ALL)
la requete
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
SELECT * FROM ACCESS access
LEFT JOIN USER user on access.USER_ID = user.USER_ID
LEFT JOIN CLIENT client on client.client_id = user.client_id
inner join (
SELECT USER_ID FROM USER_RIGHTS WHERE LOGIN_ID=90
UNION ALL
SELECT  u.USER_ID AS USER_ID FROM CLIENT_LOGIN cl INNER JOIN USER u ON u.client_id = cl.client_id WHERE  cl.ALL =1 AND cl.LOGIN_ID=90 )
) union  ON access.USER_ID = union.USER_ID