2009-06-04 4 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')), 
     ) 

Я хочу, чтобы выбрать идентификатор тега, имя тега и количество сделок (число сделок за тег). Пример запроса

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, вам нужно группировать по тегам.c.Name и tags.c.id, потому что они выбраны. –

0

вы можете присоединиться к таблице во время отображения таблицы

в orm.mapper()

для получения дополнительной информации Вы можете перейдите по ссылке

www.sqlalchemy.org/docs/

 Смежные вопросы

  • Нет связанных вопросов^_^