I am blocked with a Join Request
I have 3 tables :
TaUtilisateurs store the users
TaClients store the customers
TaJoinClients_Utilisateurs store right of user on customers :
for example :
I wrote a stored procedure to display the rights of users on each customer :
SELECT dbo.TaUtilisateurs.Login, dbo.TaClients.Entreprise, dbo.TaJoinClients_Utilisateurs.Administrateur, dbo.TaJoinClients_Utilisateurs.Editeur,
dbo.TaUtilisateurs.Id_Utilisateur, dbo.TaClients.Id_Client
FROM dbo.TaUtilisateurs LEFT OUTER JOIN
dbo.TaJoinClients_Utilisateurs ON dbo.TaUtilisateurs.Id_Utilisateur = dbo.TaJoinClients_Utilisateurs.Id_Utilisateur RIGHT OUTER JOIN
dbo.TaClients ON dbo.TaJoinClients_Utilisateurs.Id_Client = dbo.TaClients.Id_Client
WHERE (dbo.TaUtilisateurs.Id_Utilisateur = @.Id_Utilisateur)
for example for user philo :
How can I do to have all company listed like that:
Read mean a row exist in TaJoinClients_Utilisateurs for User and customer
I hope you can help me ...
thanks !Here is one way:
select tu.Login,tc.Entreprise,case when tj.Id_Client=tc.Id_Client then 'True' else 'False' end [Read]
,case when tj.Id_Client=tc.Id_Client then tj.Administrateur else 'False' end [Administrateur]
,case when tj.Id_Client=tc.Id_Client then tj.Editeur else 'False' end [Editeur]
,tu.Id_Utilisateur
,tj.Id_Client
from TaUtilisateurs tu join TaJoinClients_Utilisateurs tj on tu.Id_Utilisateur=tj.Id_Utilisateur
cross join TaClients tc
where tu.Login='Philo'|||
It works fine with user philo but not with user Nico...
|||So, it's both 'true' and 'false' you want. See if this helps:
declare @.login sysname
set @.login='Philo' --'Nico'
select *
from (
-- True
select tu.Login,tc.Entreprise,'True' [Read]
,tj.Administrateur [Administrateur]
,tj.Editeur [Editeur]
,tu.Id_Utilisateur
,tj.Id_Client
from TaUtilisateurs tu join TaJoinClients_Utilisateurs tj on tu.Id_Utilisateur=tj.Id_Utilisateur
join TaClients tc on tj.Id_Client=tc.Id_Client
union all
-- False
select tu.Login,tc.Entreprise,'False' [Read]
,'False' [Administrateur]
,'False' [Editeur]
,tu.Id_Utilisateur
,tc.Id_Client
from TaClients tc join TaUtilisateurs tu on not exists(select *
from TaJoinClients_Utilisateurs tj
where tu.Id_Utilisateur=tj.Id_Utilisateur and tj.Id_Client=tc.Id_Client)
)_v
where Login=@.login
No comments:
Post a Comment