PHPとMySQLデータベースを使用してApacheで動作するように私が最初に書いたアプリケーションを移植しています。クエリの1つはConcat_WS
とGroup_Concat
のMySQL関数を使用して、最初にいくつかの異なる列を1つの文字列に連結し、次にGroup_By
節でグループ化されたすべての項目を連結します。一例として、SQL ServerでMYSQLのGroup_Concatを実現
:
ID Name Candy
1 John M&Ms
1 John KitKat
クエリ:結果
Select Group_Concat(Concat_WS('-',Name, Candy) Separator '00--00') as UserCandy
From ExampleTable
Group By ID
:今
UserCandy
John-M&Ms00--00John-KitKat
は、私が使用してSQL Server 2008で同じ結果を達成しようとしていますPHP 5.4以上。
私が試したもの:
SELECT Stuff(name + ';' + candy, 1, 0, '-----') AS UserCandy
FROM test
問題can be seen in the fiddle that I have setup。
期待される結果は次のようになります。
-----John;MMs-----John;KitKat
最後に、私はミックスに複数の列を追加するとき、これはさらに困難になります。私はIDが同じ場所に結果をマージしたい(上記のように)。これは、グループ化された行を自動的にマージするため、group_concat
と非常によく動作します。
@bluefeet私はすでにその質問を見ましたが、私はXMLの使用を避けようとしています。私は以前のバージョンのアプリで使っていたのと同じフォーマットを維持したかったのです。 –
必要な形式でデータを取得する方法はありますが、SQLサーバーでは複数の行のデータを1つのデータに簡単に連結する方法はありません。 – Taryn
@bluefeetどうすればこの質問を変更して、回答が得られ、閉じられないようにすることができますか?私は今日主題について大量の読書をしましたが、私はまだそれを自分で手に入れていません(明らかに私が今ここにいるように) –