2013-03-13 54 views
3

我發現在我的工作中,我經常必須自己加入同一張表,部分原因是我無法控制數據庫設計,部分原因是因爲需要非常自定義的大部分時間。Django查詢時自己加入同一張表

Select distinct t.label, z.dupCount 
    From optevents t 
    Join 
     (select label, Count(*) dupCount 
      from optevents 
      group By label 
      Having Count(*) > 1) z 
    On z.label = t.label 
    where t.campaignId = 100 
    order By dupCount Desc 

我很好奇我該如何將其轉換爲Django ORM查找?

模型定義非常簡單,根本沒有外鍵。

+0

這是未經測試的,所以我會離開它作爲當下評論:'OptEvents.objects。過濾器(campaign__pk = 100).values(「label」)。annotate(dupCount = models.Count(「label」))。order_by(「dupCount」)'這是使用[特殊類型的'annotations'] //docs.djangoproject.com/en/dev/topics/db/aggregation/#values) – 2013-03-13 22:23:54

+0

問題在於我試圖找到不同標籤的數量。即標籤可以是A | B | C,我需要計數A,計數B和計數C – 2013-03-13 22:32:52

+0

@ TimmyO'Mahony實際上它確實有效。好決定! – 2013-03-13 22:36:44

回答