2017-12-11 7 views
1

「キー値ストアデータ」を多次元配列のIDでグループ化する方法はありますか?多次元配列のIDで「キー値ストアデータ」をグループ化する方法はありますか?

SQLテーブル:私は

$app = $statement->fetchAll(PDO::FETCH_KEY_PAIR); 

を使用していますが、index.phpページに、私はページネーションのために、このような配列のものが必要アプリケーションのプロフィールのPHPページについては

Table 1: App 
ID | Name  | Release 
1 | TinyWings | 2014 
2 | WarCraft | 2012 
3 | StarCraft | 1998 

Table 2: AppInfo 
ID | Key  | Value 
1 | Genre  | Casual 
1 | Rating | 0+ 
1 | System | iOS 
... 
2 | Genre  | RTS 
2 | Rating | 6+ 
2 | System | Win 
... 
3 | Genre  | RTS 
3 | Rating | 12+ 
3 | System | Win 
... 

Array (
    [0]=> Array (
       [Genre]=>[Casual] 
       [Rating]=>[0+] 
       [System]=>[iOS] 
       ...) 
    [1]=> Array (
       [Genre]=>[RTS] 
       [Rating]=>[6+] 
       [System]=>[Win] 
       ...) 
    [2]=> Array (
       [Genre]=>[RTS] 
       [Rating]=>[12+] 
       [System]=>[Win] 
       ...) 
) 

私が見つけた唯一の方法は、使用することです

MAX(CASE WHEN ... THEN .. END) AS ... 

列に行を書き込むprepare文にEVERY KEYを指定すると、PDO :: FETCH_KEY_PAIRまたはより簡単で簡単な方法で使用する方法がありますか?

答えて

0

あなたはそれを行うことができますが、本当にあなたの人生をより簡単にするようにあなたのキーを列名として使用するようにテーブルを再構成する必要があります。

あなたがデータを使用すると、次のクエリで好きな方法を得ることができますが、それは少し不器用だ:

select a.id, a.value as 'genre', b.value as 'rating', c.value as 'system' 
from Table1 a, Table1 b, Table1 c 
where (a.key = 'genre' AND b.key = 'rating' and c.key = 'system') AND (a.id = b.id AND b.id = c.id) 
group by a.id 

相続人demo

関連する問題