比方說,我有兩個Django模型人士及公司如下: -的Django ForeignKey的與空=真,內部連接和左外連接
class Company(models.Model):
name = models.CharField()
class Person(models.Model):
last_name = models.CharField(blank=True)
first_name = models.CharField()
company = models.ForeignKey(Company, null=True, blank=True)
一個人可能會或可能不屬於公司。
我正在使用MySQL。我希望所有不屬於任何公司的人員,即公司爲空的人員。
如果我做Person.objects.filter(company__isnull=True)
我得到一個SQL基本上是: -
SELECT * FROM PersonTable LEFT OUTER JOIN AgencyTable ON (PersonTable.company_id = AgencyTable.id) WHERE AgencyTable.id IS NULL
如何去實現的SQL語句: -
SELECT * FROM PersonTable INNER JOIN AgencyTable ON (PersonTable.company_id = AgencyTable.id) WHERE AgencyTable.id IS NULL
從我所收集從閱讀Django用戶郵件列表,這曾經是QuerySet Refactor之前的行爲。
編輯 - 現在我看到了我的問題的褻瀆!
我想說的是,我只是想做
SELECT * FROM PersonTable WHERE PersonTable.company_id IS NULL
好吧,如果這是不是你做的意義,這實際上是一個「基地」查詢得到INNER加入了與其他查詢,這導致怪異,重複的結果。 – chefsmart 2010-02-17 06:14:31
這個問題真的是心理障礙的結果。 – chefsmart 2010-02-17 06:58:28