2014-10-10 41 views
1

我有2个简单的表格,如下面显示MySQL的用户数没有问题

users

id name  surname 
1 John  Douglas 
2 Sam  Morris 
3 Michael Johnatan 

cells

id userId  cellPhone 
1 1   13809876543 
2 1   13809876525 
3 2   13809876450 

的结果,我想最后只使用Mysql:

result

name  surname  cellPhone 
John  Douglas  13809876543,13809876525 
Sam  Morris  13809876450 
Michael Johnatan 

这里是我的sql查询

SELECT 
    o.name, 
    o.surname, 
    CONCAT(ons.cellPhone, ',', ons2.cellPhone) as CellPhone 
FROM 
    users as o 
LEFT JOIN cells as ons 
    ON o.id = ons.userId 
LEFT JOIN cells as ons2 
    ON o.id = ons2.userId AND 
     ons.id NOT LIKE ons2.id 
GROUP BY o.id 

因此,在这种情况下,在最后我得到这样的结果:

result

Name  Surname  Phones 
John  Douglas  13809876543,13809876525 
Sam  Morris  
Michael Johnatan 

你可以看到,sql不显示Sam的电话。据我了解,它显示当用户有2个电话号码。我尝试了很多来修复它。我会赞赏,如果有人可以帮助..

回答

2

你可以这样做:

SELECT 
    users.name, 
    users.surname, 
    GROUP_CONCAT(cells.cellPhone) as CellPhone 
FROM 
    users 
LEFT JOIN cells 
    ON users.id = cells.userId 
GROUP BY users.id 

参考:

+0

+1我想知道的是,为什么我没有想到了GROUP_CONCAT – Rashad 2014-10-10 11:00:59