私はphp/mysqlに少し慣れていないので、何かが足りないと確信しています。このアプローチもおそらく最善ではありません。
次のテーブルがあります
テーブル: unit_members フィールド: id、unit_id、person_id、primary
テーブル: 人フィールド: id、name、rank_id
テーブル: ランク フィールド: ID、名前、ランク
テーブル: units フィールド: id、name、rank
各ユニットと各ユニットの人物を表示し、整数フィールドであるランクで並べ替えようとしています。単純なようですが、rank.rankで並べ替える人を取得できません。
これが私のクエリです:
'SELECT unit_members.person_id, GROUP_CONCAT(persons.id) as personid,
GROUP_CONCAT(persons.name) as name, persons.rank_id, unit_members.unit_id,
units.id as unitid, units.name as unit,
GROUP_CONCAT(DISTINCT units.codename) as squad, ranks.id as rankid,
GROUP_CONCAT(ranks.rank) as rankrank
FROM unit_members, ranks, persons, units
where persons.rank_id = ranks.id
and units.id = unit_members.unit_id
and persons.id = unit_members.person_id
group by units.codename
ORDER BY units.rank asc, ranks.rank asc';
Order by here は Group_Concat に影響を与えないように見えるので、配列に入る前に Group_Concat を何らかの方法で Order する必要があると思います。配列は個人ID順に並べられているようです。
どんな助けでも大歓迎です。前もって感謝します。