我关注了2 tables
,users
和userRoles
,其中包含以下records
:
userId userName firstName lastName password image userRoles_roleId
........................................................................
1 a@a.dk A A 1 1
2 b@b.dk B B 2 2
roleId userRole
.................
1 admin
2 user
通过以下查询,我得到的是:
SELECT users.userId, users.userName, users.firstName
, users.lastName, users.password, users.image
, userRoles.userRole FROM users
LEFT JOIN userRoles ON users.userID = userRoles.roleId;
userId userName firstName lastName password image userRole
................................................................
1 a@a.dk A A 1 NULL
2 b@b.d B B 2 NULL
当然,我希望得到的是admin
和user
。
我不清楚它应该做什么LEFT JOIN
或错误?
答案 0 :(得分:2)
left [outer] join
将允许来自"右边的一行"即使在" left"中没有匹配的行,也要显示该表表。但是,如果您没有为加入选择正确的列,那么您将无法获得良好的结果。在users
表中有一个foreign key
列,该列的名称表示它与哪个表相关。该列为userRoles_roleId
,因此您需要将查询更改为:
SELECT users.userId, users.userName, users.firstName , users.lastName, users.password, users.image , userRoles.userRole FROM users LEFT JOIN userRoles ON users.userRoles_roleId = userRoles.roleId;