如何在MYSQL或特别是蛋糕1.3中获取父ID的子计数

时间:2014-01-05 18:23:18

标签: php mysql cakephp cakephp-1.3

我正在开发一个三向树,我的表结构是

+----+---------+-----------------------+
| id | user_id | leg_type|parent_user_id
+----+---------+-----------------------+
|  1 | 1011    |  M      |1000         |
|  2 | 1012    |  L      |1000         |
|  3 | 1013    |  R      |1000         |
|  4 | 1014    |  M      |1011         |
|  5 | 1015    |  R      |1011         |
|  6 | 1016    |  M      |1012         |
+----+---------+-----------------------+

现在我想搜索一个特定的ID,比如说parent_user_id(1000)我怎样才能找到M,L和R中的孩子数

例如1000(M)= 1011,1014,1015 {3}     1000(L)= 1012,1016 {2}     1000(R)= 1013 {1}

Array(
   "1000"=>Array(
           "M" => 3
           "L" => 2
           "R" => 1
           )
)

任何优化的解决方案。我尝试了一切但不值得。

编辑:图片可视化

enter image description here

2 个答案:

答案 0 :(得分:0)

我对蛋糕php不太了解,但如果是查询,可以尝试以下

我已将测试作为您的表名

select `t1`.`parent_user_id`,`t1`.`leg_type`,count(`t1`.`leg_type`) as `leg_type_count` 
from `test` `t1`
inner join `test` `t2` on `t2`.`leg_type` = `t1`.`leg_type` 
AND `t1`.`parent_user_id` = `t2`.`parent_user_id` 
WHERE `t2`.`parent_user_id` = 1011
group by `t1`.`leg_type`

您可以在此处查看http://sqlfiddle.com/#!2/2e9f0/7

答案 1 :(得分:0)

尝试对子项进行查找,然后使用Set :: combine来排序结果。

$array = $this->User->find('all', array('conditions' => array(
    'User.parent_user_id' => 1000)));

然后做:

$array = Set::combine($array, '{n}.User.leg_type', '{n}.User.id', '{n}.User.parent_user_id');