2016-06-29 42 views
0

私は2つのテーブルMySQLのGROUP_CONCATと連結姓、姓とタイトル

場所

id | name | year | 
-------------------- 
1 | Berlin | 1966 | 
2 | Paris | 2012 | 

メンバー

0を持っています
id | title | surname | lastname | idPlace | 
------------------------------------------- 
1 | Dr | Maxi | Bax  | 1  | 
2 |  | Ameli | Steifer | 2  | 
3 |  | Wonder | Woman | 1  | 
4 |  | Harry | Barry | 2  | 

その結果、私は

name | year | members      | 
---------------------------------------------- 
Berlin | 2011 | Dr Maxi Bax, Wonder Woamn | 
Parins | 2050 | Ameli Steifer, Harry Barry | 

を取得したいと思い、私はこのSQL

SELECT p.name, p.year, 
GROUP_CONCAT(CONCAT(m.title, " " ,m.surname," ", m.lastname) SEPARATOR ', ') 
AS members FROM places p INNER JOIN member m on p.id = m.idPlace 
GROUP BY m.idPlace 

次の結果を得ることができた

ワンダーウーマンハリーバリー前に余分な空白を生成
name | year | members      | 
---------------------------------------------- 
Berlin | 2011 | Dr Maxi Bax, Wonder Woamn | 
Parins | 2050 | Ameli Steifer, Harry Barry | 

。余分な空白なしで結果を得ることは可能ですか?

答えて

1

CONCAT機能のスペースが原因です。 Wonder WoamnHarry Barryの両方にタイトルがないため、CONCAT関数メソッドは[emtpy-string][space]Wonder[space][Woamn]を返します。末尾にスペースがあるGROUP_CONCATと組み合わせると、2つのスペースとして表示されます。

この問題の解決策の1つは、タイトルがnullでない場合に限り、タイトル付きのスペースを返すことです。

CONCAT(IF(m.title IS NULL, NULL, CONCAT(m.title, " ")))

同様の問題は、同様にあなたの他の列に存在することができます。代わりに、余分なスペースを置き換えるためにREGEXP検索/置換を実行することもできますが、それはまったく別のシナリオです。それに対して私は助言します。

関連する問題