このような多くの質問はすでにstackoverflowにありますが、私の最小限の知識はSQLにまとめられていません。一つの巨大なSQLテーブルから行を結合してください
テーブルは次のようになります。私は1000 Player_Idのと200 Stat_Idの
PlayerID | StatsID | StatValue
==================================
1 | 1 | 99
1 | 2 | 31
1 | 3 | 1
2 | 1 | 102
2 | 2 | 1
2 | 3 | 33
3 | 1 | 0
3 | 2 | 1
3 | 3 | 3,4
を持っていると私は1つのユーザーオブジェクトは、次のようになり、ユーザーの配列を取得したいと思います:
{playerId:1, stats:{"1":99, "2":31, "3":1, ...}}
が、私は多くのことを試してみましたが、何も何の近隣にあり私はやりたいこのSQLで、私は私の最高の結果を得た:
SELECT `PlayerID`,
GROUP_CONCAT(`StatsID` SEPARATOR ', ')
FROM `player_stats`
WHERE 1 group by `PlayerID`
ここでは結果である:私は私のクエリにStatValue列をもたらすことができる方法
Array
(
[0] => Array
(
[PlayerID] => 15895
[stats] => 1, 2, 3
)
[1] => Array
(
[PlayerID] => 21307
[stats] => 1, 2, 3
)
? SQLクエリの後または複数のクエリを使用して目的のオブジェクトを生成する方が良いでしょうか?
パフォーマンスはそれほど重要ではありませんが、「playerId-array」を生成するには年齢がかかりません。
ありがとうございます!
。可能であれば、私は一般的にこれをサーバ側でもっと簡単に行うことができます。残念ながら、私は実際にリテラルの実装に役立つPHPやmySqlについて十分に知りません。 MS SQLのようなものでは、***はXMLやJSONを返すことで階層的なデータを表現できますが、サーバー上のオブジェクトを使っています。 – Kritner
PHPを使って出力をループし、統計を爆発させ、2番目のループを使って配列を再作成します – Poria