SELECT distinct id,forname,familyname,[username],company[b], case when sgadmingroup = 0 then 'Medlem' else 'Admin' end adm [/b]
FROM user_members LEFT JOIN site_groups, user_groups ON gid = sgid and umid=id
Om jag tar bort det fetmarkerade så returnerar frågan rätt antal poster, har jag den kvar så kommer de personer som finns i kolumnen sgid att visas två/flera gånger. Hur undviker jag det?
Alltså:
Lista alla medlemmar ur tabellen user_members
Om medlemmen skulle råka tillhöra en admingrupp ( sgadmingrupp = 1)
Visa 'admin', om inte visa 'medlem'.
select id,
forname,familyname,username,
case when exists(
select *
from site_groups sg join user_groups ug
on sg.sgid = ug.sgid
where sgadmingroup = 1
and ug.umid = um.id) then 'Admin'
else 'Member' end
from user_members um
select id,
forname,familyname,username,
iif(sgadmingroup is null,'Member','Admin')
from (user_members um left join user_groups ug
on ug.umid = um.id)
left join site_groups sg
on (ug.sgid = sg.sgid
and sgadmingroup = 1)
select id,
forname,familyname,username,
case when sgadmingroup is null then 'Member'
else 'Admin' end
from user_members um left join user_groups ug
on ug.umid = um.id
left join site_groups sg
on ug.sgid = sg.sgid
and sgadmingroup = 1
Det blir fortfarande dubletter av de medlemmar som ex. är medlem i en grupp och admin i en annan.
1|karl|olsson|kalle|ikea|Admin
1|karl|olsson|kalle|ikea|Medlem
2|bill|gates|billy|microsoft|Medlem
Även fast jag plockar med distinct i frågan.
Jag vet inte om följande fungerar i mySql, har bara testat på SQLServer.
select
um.id,
um.forname,
case max(sgadmingroup)
when 1 then 'Admin'
else 'Medlem'
end AS adm
from
user_members um
left outer join
user_groups ug
on
ug.umid = um.id
left outer join
site_groups sg
on
sg.sgid = ug.sgid
group by
um.id,
um.forname
Bör tilläggas att MAX() inte fungerade på bit-fält i sqlserver så jag satte den som en int så fungerade det, men det kanske inte är något problem om i mySql? :o
select id,
forname,familyname,username,
min(case when sgadmingroup is null then 'Member'
else 'Admin' end)
from user_members um left join user_groups ug
on ug.umid = um.id
left join site_groups sg
on ug.sgid = sg.sgid
and sgadmingroup = 1
group by
id,forname,familyname,username
toha din funkade utmärkt, tack. :)
LarsG du är skall ha en stor eloge du med. Tack!
Mitt webbhotell verkar inte vilja uppgradera till 4.1 av ngn anledning. :(
275 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e