我試圖選擇一個adjecency列表中的「父」和「祖父母」節點,但不知道如何通過SELECT查詢(即im初學者mysql程序員)建立線索。MySQL select parent and grandparent
我試圖做一個訂單系統,其中每個分銷商可以看到他們在一個月內賺了多少。我從客戶處獲得一份訂單,並且客戶分銷商從訂單中獲得佣金,分銷商「母公司」分銷商也獲得一筆小佣金。
我的表是像這樣(只寫了重要的列):
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
我怎麼會寫SELECT語句?我不需要父母一直到頂部,總是隻有2級(父母和祖父母),所以它不必是動態的 – omegan
像在僞代碼中,我只是想做的:選擇所有訂單在哪裏父母或祖父母TO orders.customer_id IS 1001 – omegan
如果你總是隻看到兩層,那麼你可以找到你想要的customer_id的父代,然後找到它的父代。然後你可以做'SELECT * FROM order WHERE order_id IN(,,)' –
staticsan