2012-07-01 126 views
0

我有以下两个表“用户”和“组”:MySQL的 - 选择组和用户都在同一个查询

USERS 
-id 
-name 
-groupid 

GROUP 
-id 
-name 

我想返回所有用户与他们的组名和组ID一起。它应该是一个外部连接组ID字段正确?

+0

是否所有用户都分配到了一组?我相信你需要一个外连接,如果你还想让users.groupid为空的用户返回。 – AllInOne

回答

1

您可以使用和groups一个LEFT JOIN之间users让谁一组中没有用户在结果集中仍然显示,但与组名和ID NULL:

SELECT 
    a.*, 
    b.name AS group_name 
FROM 
    users a 
LEFT JOIN 
    `group` b ON a.group_id = b.id 

方注意:确保你将表名group装入反引号,因为它是一个保留关键字。

的结果集应该是这个样子:

id  |  name  |  group_id  |  group_name 
----------------------------------------------------------------------------- 
1  |  John  |  5    |  ThisIsGroup5 
3  |  Tim  |  3    |  ThisIsGroup3 
6  |  NotInGroup |  NULL   |  NULL 

在上面的查询将INNER JOIN两个表,并排除在结果集的用户“NotInGroup”更改LEFTINNER

2

一个简单的INNER JOIN应该足够:

SELECT `USERS`.*, `GROUP`.name AS group_name 
FROM `USERS`, `GROUP` 
WHERE `USERS`.groupid = `GROUP`.id 
2

你会想看看JOIN声明

从手机这样做,所以请原谅任何温和不正确的语法,但一些长的行

编辑:其他人的语法更好。还为时过早这里