有没有办法按多维数组中的ID对“键值存储数据”进行分组?
SQL表:
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
...
对于我使用的app的profil php页面
$app = $statement->fetchAll(PDO::FETCH_KEY_PAIR);
但是在index.php页面上,我需要一个像这样的数组用于分页:
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语句中的每个键,有没有办法将它与PDO :: FETCH_KEY_PAIR一起使用或更好更简单的方法?
答案 0 :(得分: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