Concat多次结果,左连接不起作用

时间:2016-06-22 19:29:46

标签: sql database

在我的项目中,我有一个用户表,其中包含姓名,年龄等常规信息,电话号码列在另一个表中,并附有关系表以连接它们。

像这样。

TBL_User (name, dateofbirth, mail)
TBL_PhoneType (id, phonetype) //like, cellphone, home phone, etc.
TBL_PhoneNumber (id, phonetype, phonenuber) //lists muliple values for each user
TBL_PhoneRelation (userid, pnid)

我试图做出选择以返回用户信息和电话号码的CONCAT版本,但问题是我得到的结果。

我的第一次尝试是GROUP_CONCAT,类似于

SELECT us.name, us.dateofbirth, GROUP_CONCAT(' ', pt.phonetype, ' ', p.phonenumber) 
FROM TBL_User AS us 
LEFT JOIN TBL_PhoneRelation AS pr ON pr.userid = us.id 
LEFT JOIN TBL_PhoneNumber AS p ON p.id = pr.pnid

问题是我只得到一行而不是数据库中的所有值,而常规的CONCAT只显示一个电话号码,而子选择会出错,因为我的结果中有一行以上。

我正在尝试这样的事情

User name | Phone number                             | E-mail
Adrian    | Cellphone 11..., Home phone 22...        | adrian...
Suzan     | Cellphone 32..., Commercial phone 44...  | sue...

2 个答案:

答案 0 :(得分:0)

我会做这样的事情:

select
    U.Name,
    group_concat(', ', T.PhoneType + ' ' + N.PhoneNumber)
    U.Mail
from
    TBL_user as U
left join 
    TBL_PhoneRelation AS R ON 
        R.UserID = U.ID
LEFT JOIN 
    TBL_PhoneNumber AS N ON 
        N.ID = R.PhoneID
left join
    TBL_PhoneType as T on
        T.ID = N.PhoneTypeID
group by
    U.Name

答案 1 :(得分:0)

select
    U.Name,
    group_concat(CONCAT(T.PhoneType + ' ' + N.PhoneNumber) SEPARATOR ','),
    U.Mail
from
    TBL_user as U
left join 
    TBL_PhoneRelation AS R ON R.UserID = U.ID
LEFT JOIN 
    TBL_PhoneNumber AS N ON N.ID = R.PhoneID
left join
    TBL_PhoneType as T on T.ID = N.PhoneTypeID
group by
    U.ID