我正在创建推荐系统。现在我有两个表,一个是用户,第二个是产品。 在“用户表我”中有两列,一是用户ID,一是refered_by。 这是我的桌子。
+----+-------------+
| id | referred_by |
+----+-------------+
| 35 | 0 |
| 36 | 35 |
| 40 | 35 |
| 41 | 35 |
| 44 | 41 |
| 45 | 36 |
| 46 | 41 |
+----+-------------+
这是查询。此查询的推荐数量
select referred_by, count(*) from users group by referred_by.
但是我可以修改用户ID 35之类的结果吗?3推荐40、41和46。
现在我有产品表,并且用户ID在产品表中。
+----+---------+---------------+
| id | user_id | product_price |
+----+---------+---------------+
| 1 | 37 | 300 |
| 2 | 38 | 300 |
| 3 | 40 | 300 |
| 4 | 41 | 300 |
| 5 | 42 | 300 |
| 6 | 44 | 300 |
| 7 | 45 | 300 |
| 8 | 35 | 300 |
| 9 | 35 | 300 |
| 10 | 35 | 300 |
| 11 | 35 | 300 |
| 12 | 46 | 300 |
+----+---------+---------------+
我的内部加入查询。
select users.id,users.referred_by
,orders_products.user_id,orders_products.product_price
from users
inner join orders_products on users.id=orders_products.user_id;
并输出。
| id | referred_by | user_id | product_price |
+----+-------------+---------+---------------+
| 40 | 35 | 40 | 300 |
| 41 | 35 | 41 | 300 |
| 44 | 41 | 44 | 300 |
| 45 | 36 | 45 | 300 |
| 35 | 0 | 35 | 300 |
| 35 | 0 | 35 | 300 |
| 35 | 0 | 35 | 300 |
| 35 | 0 | 35 | 300 |
| 46 | 41 | 46 | 300 |
+----+-------------+---------+---------------+
现在。我正在尝试做的。 如果用户ID 35拥有3个推介36,40和41,则计算价格35,36,40和41的总和。 手段。 请她在下一级尝试@@我正在使用此查询。
select users.id,users.referred_by
,orders_products.user_id,sum(orders_products.product_price)
from users
inner join orders_products on users.id=orders_products.user_id group by user_id;
+----+-------------+---------+------------------------------------+
| id | referred_by | user_id | sum(orders_products.product_price) |
+----+-------------+---------+------------------------------------+
| 35 | 0 | 35 | 1200 |
| 40 | 35 | 40 | 300 |
| 41 | 35 | 41 | 300 |
| 44 | 41 | 44 | 300 |
| 45 | 36 | 45 | 300 |
| 46 | 41 | 46 | 300 |
+----+-------------+---------+------------------------------------+
现在如何从该结果中获得欲望投放。 我正试图像这样被淘汰。
User_id ,referrals, total price
35, 3(36,40,42) , 20000(this will be total price of user 35,36,40,41)