私はこの問題を抱えています。MySQLの連結問題
郵便番号付きのテーブルには、開始と終了という2つの列があります。まず、STARTとENDを選択して、それらを区切る必要があります。 〜と共に〜。 CONCAT_WSを使用してこれを行うことができますが、この連結文字列(複数の行があります)を1つの行に連結する必要もあります。
私はすでに、このクエリを持っている:(申し訳ありませんが、私はここにテーブルを挿入する方法がわからない)
row | user_id | postal range
============================
1 | 1 | AAAA-BBBB
----------------------------
2 | 1 | CCCC-DDDD
----------------------------
3 | 1 | MMMM-NNNN
----------------------------
4 | 2 | CCCC-DDDD
----------------------------
5 | 2 | EEEE-FFFF
----------------------------
とI:
SELECT pc.user_id, CONCAT_WS('-', pc.start, pc.end) FROM postal_codes pc, users u WHERE u.id=pc.user_id
しかしsのあなたは、それは私がこのような結果与え期待
row | user_ID | postal_range
----------------------------
1 | 1 | AAAA-BBBB, CCCC-DDDD, MMMM-NNNN
----------------------------
2 | 2 | CCCC-DDDD, EEEE-FFFF
----------------------------
複数の行を連結したい場合はGROUP_CONCATを使用できますが、このようなGROUP_CONCATに前のクエリのラップ結果:
SELECT pc.user_id, (GROUP_CONCAT((SELECT CONCAT_WS('-', pc.start, pc.end) FROM bs_postal_codes pc, bs_users u WHERE u.id=pc.user_id) SEPARATOR ', ')) FROM bs_postal_codes pc
それは私にエラーを与える:サブクエリは複数行
を返し誰かが、これで私のおかげで手を与える場合、それは本当に私を助けるだろう。
これはそれでよいが、SQLiteのではない可能性があります私は列名として 'end'を使うことに問題がありました。 – Francisc
良い最初の質問。私はあなたが本当にそのユーザー名を維持したいのだろうかと思います。 –