php Mysql从盛大的子树中返回信息

时间:2015-01-03 04:27:48

标签: php mysql

我有一个名为retail的mysql数据库。它有两个表.1)用户2)销售 表1)用户包含有关代理和买方的信息。所有买方必须有父母(他的代理人),所有代理人都有自己的父代理人。代理人和买方由“代理人”值隔开。值0表示其为买方,代理“1”表示代理。所有代理商必须根据其子女(买方,代理人)的销售情况获得佣金。

例如,在此数据库中,用户ID john(1)共有21个子帐户,包括他自己的1(用户ID = 21)买方帐户

任何买家进行的每次购买,销售信用或佣金将逐一通过其所有父母经销商

例如

用户ID 19(买方帐户)购买了一些东西。然后,此销售额或佣金将根据父母关系获得与其帐户相关的所有代理商

在这种情况下用户ID 19 19的父母是10岁 10的父母是8岁 8的父母是3 3的父母是1

所以这个销售的信用将没有代理人10,8,3,1

我的要求只是根据代理用户ID列出销售而不显示完整的代理树,例如我想列出代理ID 1的销售

然后它应该像这样列出 代理人1) 销售 product_id ==> 21 金额==> 33 agent ==> 3(请注意这只显示代理3,它直接在他的用户ID 1下面,但是这个销售是由他的一个最终树买家完成的)

希望你们了解这个场景。 我正在使用PHP进行应用程序端编码。提前致谢。请注意以下数据库结构和示例数据

mysql> select * from users;
+----+--------+-------+-----------+
| id | Name   | Agent | Parent_id |
+----+--------+-------+-----------+
|  1 | john   |     1 |        -1 |
|  2 | anil   |     1 |         1 |
|  3 | sam    |     1 |         1 |
|  4 | peter  |     1 |         2 |
|  5 | sara   |     1 |         1 |
|  6 | tony   |     0 |         3 |
|  7 | suresh |     0 |         5 |
|  8 | kapil  |     1 |         3 |
|  9 | dhanya |     0 |         2 |
| 10 | sharma |     1 |         8 |
| 11 | das    |     0 |         8 |
| 12 | diya   |     0 |         4 |
| 13 | hani   |     1 |         4 |
| 14 | jane   |     0 |        10 |
| 15 | deva   |     1 |         8 |
| 16 | elma   |     0 |        13 |
| 17 | raj    |     1 |        10 |
| 18 | manu   |     0 |         5 |
| 19 | gopi   |     0 |        10 |
| 20 | pavi   |     1 |         2 |
+----+--------+-------+-----------+

现在销售表

mysql> select * from sales;
+----+------------+--------+---------------+
| id | product_id | amount | buyer_user_id |
+----+------------+--------+---------------+
|  1 |         10 |     25 |             6 |
|  2 |         11 |     31 |             7 |
|  3 |         17 |     12 |             9 |
|  4 |         10 |     25 |            11 |
|  5 |         13 |     17 |            12 |
|  6 |         17 |     12 |            14 |
|  7 |         10 |     25 |            16 |
|  8 |         17 |     12 |            18 |
|  9 |         21 |     33 |            19 |
| 10 |         17 |     12 |            11 |
| 11 |         13 |     17 |             7 |
| 12 |         10 |     25 |            21 |
| 13 |         17 |     12 |            22 |
+----+------------+--------+---------------+

1 个答案:

答案 0 :(得分:0)

您应首先找到买方用户ID -

select `buyer_user_id` from `sales`;

buyer_user_id保存在php变量$ buyer_user_id

现在使用PHP和MySQL查找第一个买家用户ID的详细信息 -

select * from users where `id` = $buyer_user_id;
//Now in PHP
$user_id=$buyer_user_id;

然后使用带有此查询的PHP进行while循环以查找所有父项 -

select * from users where `Parent_id` = $user_id;
//Print the detail with PHP and the ending condition is ->> $user_id!=-1

我想,你有答案。