2009-06-04 7 views
3

Ich habe zwei Tabellen „Tags“ und „deal_tag“ und Tabellendefinition folgt,SQL-Abfrage erstellen mit sqlalchemy wählen und kommen Funktionen

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')), 
     ) 

Ich möchte Tag-ID auszuwählen, Tag-Namen und das Transaktionszahl (Anzahl von Geschäften pro Tag). Beispielabfrage ist

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; 

Wie erstelle ich die obige Abfrage mit sqlalchemy & Funktionen verbinden wählen?

Antwort

2

geben diesem einen Versuch ...

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

Sie haben die .group_by (deal_tag.c.tagid) vergessen. Und dies funktioniert nicht für DBs, die den SQL-Standard einhalten. Sie müssen nach tags.c.Name und tags.c.id gruppieren, weil sie ausgewählt sind. –

0

Sie Tabelle in der Zeit der Zuordnungstabelle

im orm.mapper beitreten können()

für weitere Informationen können Sie gehen Sie durch den Link

www.sqlalchemy.org/docs/