我正在使用typo3
db。用户存储在一个表中,usergroups
插入到以逗号分隔的行(usergroup = 1,5,88
)中。
现在,我尝试通过检查每个用户dataset
中是否存在某个群组来尝试选择群组。
select from ...... where ... usergroup IN (1,6,9) ...
如果用户数据中只有一个值(usergroup=9
),这种情况很有效
如果用户有多个usergroup
(usergroup=9,11,5,3
),则上述查询无法正常工作。
我知道这并没有真正规范化,我无法改变这一点,因此我正在寻找一种方法来使用可以处理逗号分隔值的选择查询。
有可能吗?
答案 0 :(得分:0)
使用
where find_in_set(usergroup, 1) > 0
or find_in_set(usergroup, 6) > 0
or find_in_set(usergroup, 9) > 0
答案 1 :(得分:0)
TYPO3实际上有一个api方法,用于查看关系存储为逗号分隔值的字段。如果TYPO6 6.0+你可以在这里找到这个方法\ TYPO3 \ CMS \ Core \ Database \ DatabaseConnection-> listQuery。
遗憾的是,这种方法只需要一个uid进行搜索,因此您必须遍历要搜索的所有组uid(在您的示例中为1,6和9)。
对于较新的TYPO3版本,此方法实际上只是sql函数FIND_IN_SET的包装器。较旧的版本使用了另一种基于LIKE的方法。