在SQL视图中用id替换id

时间:2010-03-02 15:28:22

标签: sql view replace

我有两张桌子......

groupid   membership_list   managerid
-------------------------------------
0         /0//1//2/         2
1         /2/               2

userid    username
------------------
0         ben
1         tom
2         dan

我想显示一个表格,例如用户'ben',这是他们所属的群组列表,如下所示......

groupid   membership_list   managername
---------------------------------------
0         /0//1//2/         dan

..所以基本上用该id的用户名替换'manager_id'。我一直在攻击这个,但是我无法解决这个问题 - 我的SQL技能显然有点缺乏 - 我怎么能这样做?

SELECT groupid, membership_list, managerid FROM blah WHERE membership_list LIKE '%/?/%'

......就我所知的而言。

3 个答案:

答案 0 :(得分:4)

SELECT t1.groupid, t1.membership_list, t2.username
FROM table1 t1
INNER JOIN table2 t2 ON t1.managerid = t2.userid

应该这样做。或者我在这里错过了什么?

答案 1 :(得分:0)

SELECT A.groupid,A.membership_list,B.managername FROM table1 A,table2 B WHERE A.managerid = B.userid和membership_list LIKE'%/?/%'

答案 2 :(得分:0)

您需要将membership_list列分解为新表:

changed table: Groups
groupid
managerid

table users
userid
username

new table: UserGroups
groupid   
userid  

然后你可以这样做:

SELECT
    * 
    FROM Users                 u
        INNER JOIN UserGroups ug On u.userid=ug.userid
        INNER JOIN Groups      g ON ug.groupid=g.groupid
    WHERE u.Name='Ben'

找到Ben的所有小组。

如果您不想修改表,则需要一个拆分函数,它将membership_list中的多个值转换为行。您没有提到您正在处理的实际数据库,并且拆分功能取决于是否知道。