所以,在joomla中有几个表:
1) users - uid, username, email
2) groups - gid, title
3) user_group_map - uid, gid
所以,我想要做的是创建一个视图,这使我更容易编写SQL来查找某些组中的用户而不是其他组。
所以,我在想的是创建一个视图,从用户表中提取uid,用户名,电子邮件,并为每个组标题设置一个bool字段,即user_group_map表中是否有该uid / gid的条目
有意义吗?
答案 0 :(得分:0)
是的,你可以这样做
SELECT uid, username, email, CASE WHEN IFNULL(ug.uid,0)=0 THEN '0' ELSE '1' END
FROM user u
LEFT JOIN user_group_map ug
ON ug.uid = u.uid, groups g
如果用户在组中,它将返回1。
答案 1 :(得分:0)
这是一个假设您有两个变量“$ inlist”和“$ notinlist”的查询。
select u.*
from user_group_map ug join
users u
on u.uid = ug.uid join
groups g
on ug.gid = g.gid
group by u.uid
having sum(case when $inlist like concat('%', g.title, '%') then 1 else 0 end) =
length($inlist) - length(replace($inlist, ',', '') and
sum(case when $notinlist like concat('%', g.title, '%') then 1 else 0 end) = 0
这假设没有一个组的名称中有逗号。
我没有测试过这个SQL,所以它可能有语法错误。