2017-02-21 5 views
0

にそれを投稿し、私は次のようなデータとSQL table_1を持っている:複数行のクエリから単一行のSQLエントリを作成し、新しいテーブル

enter image description here

と同じMSISDNを繰り返しますと、複数のエントリがありますが、それぞれの行に異なるservicCodesがあります。

私はこの情報を新しいtable_2にコピーしたいと思いますが、MSISDNごとに1つのエントリとそれに割り当てられたサービスを持ついくつかの追加のカラムがあります。単一のSQLクエリでこれを行うことはできますか?または、PHPを使用して別個のクエリを実行し、結果をループするのが最善でしょうか?

ありがとうございました。

+0

クリアするには、次のMSISDNに達するまで、MSISDN、Service1 = GP26、Service 2 = MMS、Service 3 = A131などの各MSISDNに結果が含まれている必要があります。次に、次のエントリのプロセスを再入力します。これは、Excelワークシートのピボットテーブルレイアウトとほぼ同じです。 –

答えて

1

SQLを使用すると、servicCodesを連結した列を持つ2番目の表を作成できます。 GROUP BYを使用してMSISDN列を集約することができます。

SELECT MSISDN, GROUP_CONCAT(servicCodes) as servicCodes_concatenated 
FROM table 
GROUP BY MSISDN 

servicCodesの値を持つように複数の列を作成する場合は、PHPを使用する方が簡単です。

+1

スーパー、ありがとう。それは正常に動作するので、特定のMSISDN上にサービスコードが存在するかどうかを調べるために必要なことは、LIKEクエリを実行することです。迅速な応答を感謝します。 –

+0

素晴らしい!あなたは私の答えを受け入れることができますか? – Fredster

0

あなたが探しているものは、ピボットテーブルと呼ばれていると思います。あなたが定義ごと動的な列名を取得したよう

それはlateronそれらの列に対処するのは難しい(ER)があります:

はので、それらに一つだけのコメントは、mysql pivot table

すべてがおそらくあると言われている参照してください。したがって、単にデータを報告するだけではなく、そのデータをさらに活用するためには、より洗練された手続きが必要になるでしょう。

+0

@LouisMeyer:あなたが後でコメントでそれらを言及したのを参照してください。私が答えを書いていた間であったはずです。だから、もしあなたがすでに知っていたことを言ったら、すみません。そのような重要なキーワードをタイトルや質問の中に書き留めておくことをお勧めします。 – RuDevel

関連する問題