棘手的2表查询的

时间:2015-06-08 13:03:35

标签: sql

我正在努力使用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之前,我需要知道要获取哪些组?

任何帮助都将不胜感激。
谢谢!

2 个答案:

答案 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?