我在哪里可以找到有关构建此类查询的一些信息:
select
SomeField1,
(select count(distinct SomeField2) from SomeTable where SomeCondition) as SomeField3
from
SomeTable2
where
SomeCondition2
使用Django ORM?它可能在某个地方的Django文档中,但我找不到它。
答案 0 :(得分:0)
Django的ORM旨在以每个模型为基础执行查询及其关系数据(即ForeignKey,ManyToManyRelationship,...)。您的示例显示,您需要从两个不相关的模型同时获得两个结果。 AFAIK,除了单独做之外没有办法做到这一点
count = SomeTable.objects.filter(SomeCondition).distinct(SomeField2).count()
somefield1 = SomeTable2.objects.filter(SomeCondition2)
但是,如果你真的需要这样做,有几种方法可以实现它,但我不推荐它们:
答案 1 :(得分:0)
你的两张桌子有什么关系?
我想你需要计数,有一个没有检查的代码片段,
SomeModel2.objects.annotate(new_field=Count('SomeField2',
distinct=True)).filter(condition=condition,
another_condition=condition2).values('new_field', 'Somefield1')
有关详细信息,请参阅https://docs.djangoproject.com/en/dev/ref/models/querysets/#annotate和How to sort by annotated Count() in a related model in Django。
答案 2 :(得分:0)
由于你的问题特别是 ,你可以找到这些信息,看一下Aggregation | Django docs - 它应该可以帮助你实现你在这里尝试的一些东西(特别是,数)
然而,将不相关的表一起查询并不是一件很常见的事情。您最好手动进行单独的查询并将返回的数据放在一起,因为无论如何您的数据库都会拆分该查询。
在您的情况下,如果您必须运行该查询,我会建议您在数据库中make raw SQL queries,