我试图在邻接列表中选择“父”和“祖父”节点,但不知道如何通过 SELECT 查询构建(我是初学者 mysql 程序员)。
我试图建立一个订单系统,每个分销商都可以看到他们在一个月内赚了多少钱。我从客户那里得到订单,客户经销商从该订单中获得佣金,而经销商的“母公司”经销商也获得少量佣金。
我的表格是这样的(只写了重要的列):
Table: order
-----------------------------
order_id | customer_id
-----------------------------
1 | 1007
2 | 1004
3 | 1001
4 | 1005
5 | 1009
Table: customers
------------------------------
customer_id | distributor_id <-- distributor_id is just like parent_id
------------------------------ (customers can also be distributors)
1001 | 0
1002 | 0
1003 | 0
1004 | 1001
1005 | 1004
1006 | 1002
1007 | 1001
1008 | 1005
1009 | 1004
对于 order_id 5,客户 1009,(父)分销商是 1004。1004 的(祖父)分销商是 1001。distributor_id 为 0 仅表示没有父分销商。
我想要做的是在一页上显示 1001 获得佣金的所有订单(客户的父母和祖父母)。我坚持只选择父母,当祖父母进入我在深水中游泳的混合物时,帮助!:)
编辑:我可能已经用这个解决了它(不知道它是否有问题):
SELECT c.*, o.*
FROM customers c
LEFT JOIN orders o ON c.customer_id = o.customer_id
LEFT JOIN customers p ON p.customer_id = c.distributor_id
WHERE c.distributor_id = 1001 OR p.distributor_id = 1001