2016-06-22 10 views
0

私のプロジェクトでは、名前、年齢などの定期的な情報を持つユーザーテーブルがあり、それを接続する関係テーブルを持つ別のテーブルにリストされています。左の結合を使用した複数の結果の連結

このようなものです。

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バージョンを返すように選択をしようとしてんだけど、問題は、私が得る結果です。

私の最初の試みは、問題は、私はすべてのデータベースからの値と正規CONCATショーのみ1つの電話番号、およびサブ選択のみ1行を取得していないことを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 

のようなものがあるさ結果に1行以上あるのでエラーが出ます。

私はこのようなものだろう。この

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

答えて

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 
+0

が手袋のような、しかし、IDによるグループとフィットします。 – douglascast

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 
+0

MariaDBの問題であるかどうかはわかりませんが、このコンカットでは0,0,0,0のような結果が得られました。 – douglascast

関連する問題