【发布时间】:2011-06-02 16:22:39
【问题描述】:
我有一个使用嵌套集模型类来组织我的数据的应用程序,但是我正在尝试编写一个查询来 group_concat 我的结果。我知道我需要在某处放置一些子选择语句,但我想不通!
这是我目前的结构:
表:人
-----------+------------+-----------
|Person_ID | Name | Age |
-----------+------------+-----------
| 1 | Mark Vance | 19 |
| 2 | Michael Tsu| 22 |
| 3 | Mark Jones | 29 |
| 4 | Sara Young | 25 |
-----------+------------+-----------
表:person_to_group
----+------------+-----------
|ID | Person_ID | Group_ID |
----+------------+-----------
| 1 | 3 | 1 |
| 2 | 3 | 2 |
| 3 | 1 | 2 |
| 4 | 4 | 3 |
----+------------+-----------
表格:组
----------+--------------+--------------+-------------
|Group_ID | Group_Name | Group_Left | Group_Right |
----------+--------------+--------------+-------------
| 1 | Root | 1 | 6 |
| 2 | Node | 2 | 5 |
| 3 | Sub Node | 3 | 4 |
----------+--------------+--------------+-------------
我需要用我的结果来渲染这样的东西:
//获取此人的group_ID,并将其放入class标签中...
<li class="2 3">Sara Young is in the Sub Node Group</li>
请注意,尽管 Sara 在 Sub Node 组中,但由于她是 Node 的孩子,她仍然被赋予 Node 的 id。
以下是我作为起点使用的查询。
SELECT *, GROUP_CONCAT( CAST( gg.Group_ID AS CHAR ) SEPARATOR ' ' ) Group_IDs
FROM groups gg
LEFT JOIN person_to_group AS t1 ON gg.Group_ID = t1.Group_ID
LEFT JOIN person AS t2 ON t2.Person_ID = t1.Person_ID
GROUP BY t2.per_ID
ORDER BY t2.Name ASC
任何帮助将不胜感激!
【问题讨论】:
标签: php mysql group-by nested group-concat