2017-09-30 6 views
0

SQL AlchemyでCASEとEXISTSを結合する方法は?たとえば

SELECT 
    CASE WHEN EXISTS (
    SELECT 
     * 
    FROM 
     "Teaching" 
    WHERE 
     "Teaching".student_idn = "Student".idn 
) THEN 'Teaching Assistant' ELSE 'Student' END AS "Category" 
FROM 
    "Student" 

はどのようにこれはSQL錬金術で書くことができますか?私はどのようにCASEを行うことができるか把握することができました。しかし、我々はEXISTS

+1

さまざまな方法があります。中核となる構造['exists()'](http://docs.sqlalchemy.org/en/latest/core/selectable.html#sqlalchemy.sql.expression.exists)、[Query APIに相当する](http: //docs.sqlalchemy.org/en/latest/orm/query.html#sqlalchemy.orm.query.Query.exists)および[関連プロパティからのショートカット](http://docs.sqlalchemy.org/en/latest /orm/tutorial.html#using-exists)。したがって、答えはあなたの既存のコードに依存します。 –

+1

おそらくハイブリッドプロパティを見て、そのフィルタを...(どのレベルでsqlaを使っているかに依存します) –

答えて

0

次のようなアプローチを必要とし、その取得の複雑な作品:

sub = session.query(Teaching).filter(Teaching.columns.student_idn == Student.columns.idn) 

query = session.query(Student.columns.name, case([(sub.exists(), "Teaching Assistant")], else_ = "Student") 
) 

は、おそらくより良い方法があります。

関連する問題