更改从sql存储过程返回的数组的格式


change the format of the array returned from a sql stored procedure

我甚至不知道我想要的是否可能,但现在开始:我有一个存储过程,返回一个数组,其中包含我需要的所有数据,但不是我想要的格式:我有

USER

TYPE

USER_TYPE (foreign key user_id from USER, type_id from TYPE)

GAME

USER_GAME (foreign key user_id from USER, game_id from GAME)

我有一个关于JOINS:的查询

SELECT user_name,type_name,game_name
FROM user u
INNER JOIN user_type ut
    ON u.user_id=ut.user_id
INNER JOIN type t
      ON ut.type_id=t.type_id
LEFT JOIN user_game ug
    ON u.user_id=ug.user_id
INNER JOIN game g
    ON ug.game_id=g.game_id
WHERE t.type_name = ?
...

所以我得到了以下格式的数组:

[0] => Array
    (
        [user_id] => 1
        [type] => type1
        [game] => game1
    )
[1] => Array
    (
        [user_id] => 1
        [type] => type1
        [game] => game2
    )
[2] => Array
    (
        [user_id] => 1
        [type] => type2
        [game] => game2
    )

等等。。。

但是我希望查询返回一个数组,比如

[0] => Array
    (
        [user_id] => 1
        [type] => type1
        [game1] => game1
        [game2] => game2
    )
[1] => Array
    (
        [user_id] => 1
        [type] => type2
        [game1] => game1
        [game2] => game2
    )

等等。。。

因此,列出每个数组中一个用户的所有游戏:我想我基本上需要保持join-on类型,从中获得各种user_id,然后获得这些不同user_id中的每一个的游戏,并合并所有这些。如果能在手术过程中做到这一点,那就太好了。

我希望这不是不可读的,会非常感谢任何帮助。顺便说一句,如果你们中有人能指导我学习关于更高级sql查询的好教程,因为我对此有点欠缺。。。非常感谢!

数组是PHP端结构,而不是MySQL。您的存储过程将返回一个结果集,您必须循环使用PHP数组才能从每个玩家那里获取所有游戏。