2016-04-06 5 views
0
#app adset 
app_list = db.session.query(
    AdsetAppReport.adset_id.label("adset_id"), 
    func.sum(AdsetAppReport.spend).label("spends"), 
    ).group_by(AdsetAppReport.adset_id) 

#web adset 
web_list = db.session.query(
    AdsetReport.adset_id.label("adset_id"), 
    func.sum(AdsetReport.spend).label("spends"), 
    ).group_by(AdsetReport.adset_id) 

#union two tables 
both_list = app_list.union(web_list) 

#Query 
adset_list = db.session.query(
    Adset.adset_id, 
    Adset.user_os, 
    both_list.spends, 
    ).filter(both_list.adset_id == Adset.adset_id) \ 
    .all() 

私はtwo_listとして2つのテーブルをマージして、一時テーブルにadset inner joinを作成します。 私はコードを実行するが、それは私にAttributeErrorを示す。 AttributeError:both_list 'クエリ'オブジェクトに属性 '支出'がありませんpython sqlalchemy union query、 'Query'オブジェクトには '費やす'属性がありません

+0

テーブルの構造は何ですか?クエリを減らすことは間違いなく助けになるでしょう。さらに、 'app_list'と' web_list'は同じです。 – API

+0

app_listはAdsetAppReportテーブル、web_listはAdsetReportテーブル、同一ではありません.2つのテーブルの構造は類似しています。 – shenyang

答えて

0

これが機能するかどうかは確認できませんでしたが、サブクエリを作成すると解決できる可能性があります。さらに、私は結合を明示的にしました。

#union two tables 
both_list = app_list.union(web_list).subquery() 

#Query 
adset_list = db.session.query(
     Adset.adset_id, 
     Adset.user_os, 
     both_list.c.spends, 
    ).\ 
    join(both_list, both_list.c.adset_id == Adset.adset_id).\ 
    all() 
+0

あらかじめ助けてくれてありがとう、私は次のエラーが表示されます: 'エイリアス'オブジェクトに属性 '支出'がありません – shenyang

+0

'both_list.c.spends'と' both_list.c.adset_id'に 'c'を含めましたか? (これは列を表す) – API

+0

nice.itの大丈夫です。本当にありがとうございます。 – shenyang

関連する問題