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
la requete
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)
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
Partager