2013-04-23 42 views
1
CREATE TEMPORARY TABLE TEMP (SELECT * FROM TABLE ORDER BY COLUMN_A); 
SELECT * FROM TEMP ORDER BY COLUMN_B; 

我有一個表存儲每個城市的最後24小時pm點,我想選擇每個城市的最新pm點。所以我用「選擇*從city_pm按日期desc限制the_count_of_city」,然後我想要有每個城市的最新pm點的排名,所以我使用select之前創建一個臨時表,並通過pm點排序表...這是我試圖完成的,我無法弄清楚一個更好的方法,所以我決定創建一個臨時表。如何使用Django的ORM創建臨時表以按照兩個條件對同一列進行排序?

+0

我懷疑這是所有可能的mysql本身 – jimy 2013-04-23 06:45:39

+0

@jimy:臨時表存在:http://dev.mysql.com/doc/refman/5.1/en/create-table.html你是不是故意的? – cyroxx 2013-04-23 06:53:14

+2

@Teddy:歡迎來到Stackoverflow!臨時桌背後的原因是什麼?爲什麼不同時訂購兩欄? – cyroxx 2013-04-23 07:02:50

回答

2

我相信左連接可能有助於這種情況。你的目標是按照最後一個PM點排列城市。

假設你city表的主鍵是city_id,和一個單獨的表稱爲city_pm持有PM點,你有兩個型號城和City_Pm ...

在你看來:

cities = City.objects.all() 

在你的模型:

class City(models.Model): 
    # fields ... 

    def get_latest_pm(self): 
     try: 
      return City_Pm.objects.filter(city_id=self.pk).order_by("-date")[:1].get() 
     except: 
      return None 

在模板:

{% for city in cities %} 
    {{ city.get_latest_pm }} 
{% endfor %} 
+0

非常感謝,這真的幫助我 – Teddy 2013-04-28 06:43:16

相關問題