我有一个名为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 |
+----+------------+--------+---------------+
答案 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
我想,你有答案。