从3表与2列匹配mysql获得结果

时间:2016-03-18 16:23:50

标签: php mysql

我有3张这样的桌子......

Table1.
group_id        admin
................
1         x
2         y
3         z

Table2
group_id        user
....................
1               a
1               b
2               d

Table3
user            status
......................
x               hi
y               hello
z               oh
a               oho
b               sss
d               oops

现在您可以看到在上面的表格中我们有group id但在第一个表格中我有组管理员,第二个表格包含组成员。 以下是我们想要这样的结果,其中group admin以及group members我们想要来自一个信号组。

group_id        user          status
....................................
1               x             hi
1               a             oho
1               b             sss

所以,,,帮助我们在mysql

中获得类似上面的结果

2 个答案:

答案 0 :(得分:0)

如果您根据数据集考虑数据......

表1和表2中的数据在列中匹配,但您需要它们。因此,使用UNION语句,您可以组合这两个表,为结果集添加别名并将其连接到第三个表以获得所需的结果。

这会生成一个派生表,也就是内联视图(别名为t2)

SELECT T2.Group_ID, T2.user, T3.Status
FROM (SELECT group_ID, Admin as user 
      FROM table1
      UNION ALL
      SELECT group_ID, user 
      FROM table2
     ) t2
INNER JOIN table3 t3
 on t3.group_Id = T2.GroupID

答案 1 :(得分:0)

试试这个?

SELECT table1.group_id, table3.user, table3.status 
FROM Table1, table2
    LEFT JOIN table3 ON (table1.admin = table3.user OR table2.user = table3.user)
WHERE table1.group_id = table2.group_id AND table1.group_id = 1
GROUP BY table3.user

我假设每个组都有一个管理员,每个用户都有一个表3中的条目。