2009-06-04 38 views
3

我有兩個表的「標籤」和「deal_tag」創建SQL查詢,並表定義如下,使用SQLAlchemy的選擇和加入功能

Table('tags', metadata, 
      Column('id', types.Integer(), Sequence('tag_uid_seq'), 
       primary_key=True), 
      Column('name', types.String()), 
     ) 

Table('deal_tag', metadata, 
     Column('dealid', types.Integer(), ForeignKey('deals.id')), 
     Column('tagid', types.Integer(), ForeignKey 
      ('tags.id')), 
     ) 

我要選擇標籤ID,標籤名稱和交易數(數的交易每 標籤)。樣本查詢

SELECT tags.Name,tags.id,COUNT(deal_tag.dealid) FROM tags INNER JOIN 
deal_tag ON tags.id = deal_tag.tagid GROUP BY deal_tag.tagid; 

如何創建使用SQLAlchemy的選擇&加入功能上面的查詢?

回答

2

這給一個嘗試...

s = select([tags.c.Name, tags.c.id, func.count(deal_tag.dealid)], 
      tags.c.id == deal_tag.c.tagid).group_by(tags.c.Name, tags.c.id) 
+1

你忘了.group_by(deal_tag.c.tagid)。這對於尊重SQL標準的DB不起作用,因此需要通過tags.c.Name和tags.c.id進行分組,因爲它們已被選中。 – 2009-06-04 15:39:46

0

,您可以加入表映射表的時間

orm.mapper()

的越多,你能信息

去通過鏈接

www.sqlalchemy.org/docs/