如何在mysql中使用连接?

时间:2010-10-09 16:06:20

标签: sql mysql database join

如果我有两个表,如

用户表 - “你”

userid | name
 1     |  lenova
 2     |  acer
 3     |  hp

传递表格 - “p”

userid | password
 1     | len123
 2     | acer123
 3     | hp123

至于我从教程中学到的东西,我可以使用许多可用的连接来加入这两个表 mysql如here

所述

如果我有一张像

这样的表格

角色表 - “r”

roleid | rname
 1     | admin
 2     | user
 3     | dataanalyst

令牌表 - “t”

tokenid| tname
 1     | xxxx
 2     | yyyy
 3     | zzzz

tole_token_association table-“a”

roleid | tokenid
 1     |  1
 1     |  2
 3     |  1
 3     |  3
 3     |  1

我必须进行连接,以便我必须显示一个对应的表 像这个“角色名称”拥有所有这些令牌。如何做到这一点?我很迷惑。是否可以加入?我很喜欢mysql。我希望玩那些不玩的查询。我想要精通。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法是查看需要连接的列名何时命名相同:

SELECT r.rname,
       t.tname
  FROM ROLE r
  JOIN ROLE_TOKEN_ASSOCIATION rta ON rta.roleid = r.roleid
  JOIN TOKEN t ON t.tokenid = rta.tokenid

这将仅返回与关联标记的角色。如果您的角色没有关联的令牌,则需要使用OUTER连接,如下所示:

   SELECT r.rname,
          t.tname
     FROM ROLE r
LEFT JOIN ROLE_TOKEN_ASSOCIATION rta ON rta.roleid = r.roleid
     JOIN TOKEN t ON t.tokenid = rta.tokenid

link might help -- it's a visual representation of JOINs