我对php / mysql有点新意,所以我肯定我错过了什么。这种方法可能也不是最好的。
我有以下表格
表:unit_members 字段:id,unit_id,person_id,primary
表:人 字段:id,name,rank_id
表:排名 字段:id,name,rank
表:单位 字段: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不会影响Group_Concat,所以我的猜测是我需要在它进入数组之前以某种方式对Group_Concat进行排序。该数组似乎是按人名订购的。
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
我认为你只是有一些误解。
您的ORDER BY
不会影响GROUP_CONCAT()
的结果。您可以通过在parens中指定订单来change the order of results in a GROUP_CONCAT()
function。
按照目前的情况,您的查询将按unit.codename分组,并且在每个unit.codename中,任意结果将首先按units.rank排序,然后按ranking.rank排序。
一个更大的问题:你一直在谈论阵列。这里没有数组。