Sql server SQL查询的等效Django语法由内部联接、计数、where组成,是什么?

Sql server SQL查询的等效Django语法由内部联接、计数、where组成,是什么?,sql-server,django,python-3.x,Sql Server,Django,Python 3.x,我有一个DB,它有如下表: class Maindata(models.Model): index = models.TextField(primary_key=True) dco = models.IntegerField(db_column='DCO', blank=True, null=True) patient = models.IntegerField(db_column='PATIENT', blank=True, null=True) primary

我有一个DB,它有如下表:

class Maindata(models.Model):
    index = models.TextField(primary_key=True)
    dco = models.IntegerField(db_column='DCO', blank=True, null=True)
    patient = models.IntegerField(db_column='PATIENT', blank=True, null=True)
    primary = models.IntegerField(db_column='PRIMARY', blank=True, null=True)
    fsdate = models.TextField(db_column='FSDATE', blank=True, null=True)
    uhpi = models.TextField(db_column='UHPI', blank=True, null=True)
    uhpiold = models.TextField(db_column='UHPIold', blank=True, null=True)
    wghnum = models.TextField(db_column='WGHNUM', blank=True, null=True)
    idstatus = models.TextField(db_column='IDstatus', blank=True, null=True)
    fsc2date = models.TextField(db_column='FSC2DATE', blank=True, null=True)
    iopat = models.TextField(db_column='IOPAT', blank=True, null=True)
    anndate = models.TextField(db_column='ANNDATE', blank=True, null=True)
    site =  models.ForeignKey('Sitelut', db_column='SITE', to_field='code', blank=True, null=True, related_name='site')
和化疗表:

   class Chemotherapy(models.Model):
    index = models.TextField(primary_key=True)
    patient = models.IntegerField(db_column='PATIENT', blank=True, null=True)
    primary = models.IntegerField(db_column='PRIMARY', blank=True, null=True)
    episode = models.IntegerField(db_column='EPISODE', blank=True, null=True)
    material = models.ForeignKey('Chemomateriallut', db_column='MATERIAL', blank=True, null=True, related_name='material')
    stdate = models.TextField(db_column='STDATE', blank=True, null=True)
    enddate = models.TextField(db_column='ENDDATE', blank=True, null=True)
    method = models.ForeignKey('Chemomethodlut', db_column='METHOD', blank=True, null=True, related_name='method')
我正在尝试执行一个连接两个表并获取一些信息的查询(以下是我的查询):

最初,我使用过滤器和注释。但是,我意识到它不会返回相同的结果(因为我不会检查它是否具有相同的主id)

我的初始语法如下:

Chemotherapy.objects.filter(
    patient__in=Maindata.objects.filter(site='1749')
.values('patient').distinct()).select_related().values('material', 'method')
.annotate(dcount=Count('material', 'method'))

如何修复此查询?

如果您的SQL查询正常工作,您可以使用Django ORM原始SQL选项:

query = "Select count(*), Chemotherapy.Material, Chemotherapy.METHOD from ..."
Chemotherapy.objects.raw(query)
query = "Select count(*), Chemotherapy.Material, Chemotherapy.METHOD from ..."
Chemotherapy.objects.raw(query)