需要帮助创建MySQL视图,复杂的连接

时间:2013-02-25 19:00:20

标签: mysql join view joomla

所以,在joomla中有几个表:

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

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

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

有意义吗?

2 个答案:

答案 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,所以它可能有语法错误。