【发布时间】:2011-08-16 07:00:54
【问题描述】:
我对 php/mysql 有点陌生,所以我确定我遗漏了一些东西。这种方法可能也不是最好的。
我有以下表格
表:unit_members 字段:id、unit_id、person_id、primary
表:人 字段:id、name、rank_id
表格:排名 字段:id、name、rank
表格:单位 字段:id、name、rank
我正在尝试显示每个单元和每个单元中的人员,并按排名对人员进行排序,这是一个 int 字段。看起来很简单,但我无法让这些人按 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 不会影响 Group_Concat,所以我的猜测是我需要在 Group_Concat 进入数组之前以某种方式对其进行排序。该数组似乎是按人员 ID 排序的。
任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
使用 {} 按钮格式化代码。
标签: php mysql arrays group-concat