表一
表二
Table2.plan_selected显示了用户选择的计划。
例如:表2中user_id=4的用户从表1中选择id = 2的计划。
我想获取Table 1中的所有行,而只获取Table 2中与特定user_id
匹配的行。
预期的结果是这样的。
我想提取Table 1的所有行,而只提取Table 2中特定user_id(比如4)的选定计划。
预期的结果将是这样的:
计划ID名称 * 计划类型详细信息请求每月 * 价格 * 已删除计划 * 已选择
1每月执行一次{1000可能需要} 1000 50 0空
2基本每月{500可能需要} 1000 25 0 2
3每月免费{10可能需要} 1000 0 0空
4每年执行{1000可能要求} 1000 500 0空
5基本年度{500可能要求} 1000 250 0空
6每年免费{10可能需要} 1000 0 0 NULL
我所尝试做的是使用一个简单的左连接。select plans.id, name, plan_details, plan_type, request_per_month, price,is_deleted, plan_selected from SubscriptionsPlans as plans left join SubscriptionsOrder as orders on plans.id=orders.plan_selected where orders.user_id = 4
这是我的两个模型。ORM查询集或SQL查询将有所帮助
class SubscriptionsPlans(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255)
plan_type = models.CharField(max_length=255)
plan_details = models.TextField(max_length=1000)
request_per_month = models.IntegerField()
price = models.FloatField()
is_deleted = models.BooleanField(default=False)
class SubscriptionsOrder(models.Model):
id = models.IntegerField(primary_key=True)
user_id = models.ForeignKey(
AppUser,
null=True,
on_delete=models.SET_NULL
)
plan_selected = models.ForeignKey(SubscriptionsPlans, null=True, on_delete=models.SET_NULL)
billing_info = models.IntegerField()
1条答案
按热度按时间fkaflof61#
您可以使用以下方式进行查询:
这将列出所有
SubscriptionPlans
,其中存在SubscriptionOrder
,4
为user_id
。