Почему я получаю свои значения в неправильном порядке при использовании group_concat и разборе их в json?
Вот мой код
$sql = "select
e_name,
a_shortcut,
GROUP_CONCAT(case
when t_rank = 1 then a_shortcut
when t_rank = 2 then a_shortcut
when t_rank = 3 then a_shortcut
end separator ',') as group_con
from
team inner join event on team.EID = event.eid Where e_type = 'nonsport' group by event.eid";
$con = mysqli_connect($server_name,$mysql_user,$mysql_pass,$db_name);
$result = mysqli_query($con,$sql);$response = array();
while($row=mysqli_fetch_array($result))
{
$ar=explode(',',$row['group_con']);
array_push($response, array("e_name"=>$row[0],"First"=>$ar[0],
"Second"=>$ar[1], "Third"=>$ar[2]));
}
echo json_encode (array("nresults"=>$response));
Вот вывод, который дает мне
{"nresults":[
{"e_name":"AAA","First":"3rd","Second":"2nd","Third":"1st"},
{"e_name":"BBB","First":"2nd","Second":"1st","Third":"3rd"}
Вот мой ожидаемый результат
{"nresults":[
{"e_name":"AAA","First":"1st","Second":"2nd","Third":"3rd"},
{"e_name":"BBB","First":"1st","Second":"2nd","Third":"3rd"}
использование order by
при выборе из таблицы, где вы получаете a_shortcut, прежде чем сделать inner join
,
Других решений пока нет …