0

所以,在 joomla 中有几个表:

1) users - uid, username, email
2) groups - gid, title
3) user_group_map - uid, gid

所以,我想要做的是创建一个视图,让我更容易编写 SQL 来查找某些组中的用户,而不是其他组。

所以,我在想的是创建一个视图,它从用户表中提取 uid、用户名、电子邮件,并为每个组标题都有一个 bool 字段,即 user_group_map 表中是否有该 uid/gid 的条目。

有道理?

4

2 回答 2

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。

于 2013-02-25T19:08:15.363 回答
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,所以它可能有语法错误。

于 2013-02-25T19:08:21.753 回答