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?
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.
270 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a