我有两张桌子......
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 '%/?/%'
......就我所知的而言。
答案 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中的多个值转换为行。您没有提到您正在处理的实际数据库,并且拆分功能取决于是否知道。