Sql server SQL查询的等效Django语法由内部联接、计数、where组成,是什么?
我有一个DB,它有如下表: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
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)