gpt4 book ai didi

mysql - Django 查询与同一个表上的另一个查询连接

转载 作者:行者123 更新时间:2023-11-29 18:14:18 25 4
gpt4 key购买 nike

我有一个这样的模型:

class mymodel(models.Model):
user1 = models.CharField(max_length=255, null=True, blank=True)
user2 = models.CharField(max_length=255, null=True, blank=True)
paid = models.FloatField(default=0)
reason = models.CharField(max_length=150, choices=REASON_NAMES, null=True, blank=True)

我有两个这样的查询:

users_trx1 = mymodel.objects.values('user1').annotate(r1_c=Count(
Case(
When(reason='REASON1', then=1),
output_field=IntegerField()
)
)).annotate(r2_c=Count(
Case(
When(reason='REASON2', then=1),
output_field=IntegerField()
)
)).order_by('user1')

第二个查询获取支付给 user2 的金额:

users_trx2 = mymodel.objects.values('user2').annotate(r1_s=Sum(
Case(
When(reason='REASON1', then='paid'),
default=0.0,
output_field=FloatField()
)
)).annotate(r2_s=Sum(
Case(
When(reason='REASON2', then='paid'),
default=0.0,
output_field=FloatField()
)
)).order_by('user2')

现在我需要一种左连接两个查询的方法。这意味着我需要一个新的查询来获取每一行:(user1, r1_c, r1_s, r2_c, r2_s)。
我需要联接来从 users_trx2 查询中获取与 users_trx1 查询中的 user1 匹配的 user2 值。

我正在使用 Django 1.11 和 mysql 后端

最佳答案

经过大量搜索,我认为 Django ORM 不支持如此复杂的查询,所以我最后使用原始 SQL 来获取结果。

关于mysql - Django 查询与同一个表上的另一个查询连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47159143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com