我正在努力使用SQL来实现这个工作,给出了表格设计, 所以我无法改变它。
表1
username usergroup flag ---------------------------- hans unit1 0 unit1 group1 NULL unit1 group2 NULL erwin unit1 0 jan unit2 0 jan unit1 0 unit2 group1 NULL unit2 group3 NULL
表2
usergroup roll_id -------------------- group1 4 group2 5 group3 6
我需要一个语句来获取给定用户名的roll_ids。
注意:
用户拥有标志0。 组标志为NULL。
示例:
用户jan在unit1和unit2中,现在每个单元都有一个或多个组,存储在同一个表中。
那么,在获取roll_id之前,我需要知道要获取哪些组?
任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:0)
简单的JOIN应该这样做。如果我正确理解您的要求,这应该有效:
SELECT table2.roll_id FROM table2
INNER JOIN table1 ON (table2.username = table1.usergroup)
WHERE table1.username="enter a username here"
我假设您的架构是正确的,并且table1.usergroup与table2.username匹配。为清晰起见,您可能需要考虑重命名列名称。
答案 1 :(得分:0)
SELECT t2.roll_id FROM table1 t1a, table1 t1b, table2 t2
WHERE t1a.flag = 0 AND t1a.usergroup = t1b.username
AND t1b.usergroup = t2.username AND t1a.username = 'someUsername'
table1的2个副本,以找到用户的实际“用户组”?并加入table2?