2016-09-22 10 views
0

副照会テーブルinner_stmtがあります。これはテーブルrevisionsと結合したいものです。しかし、revisions.join()は次のエラーを返します。SQLAlchemy式言語:サブクエリを使用してテーブルを結合する方法?

Neither 'Label' object nor 'Comparator' object has an attribute 'c' 

ここに私のコードです。私は間違って何をしていますか?

inner_stmt = select([ 
     ratings.c.article_name, 
     func.min(ratings.c.timestamp).label('mintime')]) \ 
    .group_by(ratings.c.article_name).label('firstga') 

stmt = select([ 
     revisions.c.article_id, 
     func.max(revisions.c.length_bytes)]) \ 
    .select_from(revisions.join(
     inner_stmt, 
     revisions.c.article_name == inner_stmt.c.article_name)) \ 
    .group_by(table.c.article_id)   

答えて

1

あなたのサブクエリinner_stmtをINGのlabelあります。 labelは、列または式の場合です。つまり、SELECT ... AS ...です。代わりにaliasが必要です(サブクエリ式の場合はFROM ... AS ...)。カラム(.c.<name>)にアクセスすることはできません。これはSQLであってもSQLであっても可能です。

+0

ああ、とても簡単!ありがとう。 – elplatt

関連する問題