我有兩個表beard
和moustache
定義如下:RIGHT OUTER JOIN在SQLAlchemy的
+--------+---------+------------+-------------+
| person | beardID | beardStyle | beardLength |
+--------+---------+------------+-------------+
+--------+-------------+----------------+
| person | moustacheID | moustacheStyle |
+--------+-------------+----------------+
我已PostgreSQL中創建的SQL查詢,這將結合這兩個表,併產生如下結果:
+--------+---------+------------+-------------+-------------+----------------+
| person | beardID | beardStyle | beardLength | moustacheID | moustacheStyle |
+--------+---------+------------+-------------+-------------+----------------+
| bob | 1 | rasputin | 1 | | |
+--------+---------+------------+-------------+-------------+----------------+
| bob | 2 | samson | 12 | | |
+--------+---------+------------+-------------+-------------+----------------+
| bob | | | | 1 | fu manchu |
+--------+---------+------------+-------------+-------------+----------------+
查詢:
SELECT * FROM beards LEFT OUTER JOIN mustaches ON (false) WHERE person = "bob"
UNION ALL
SELECT * FROM beards b RIGHT OUTER JOIN mustaches ON (false) WHERE person = "bob"
但是我無法創建它的SQLAlchemy表示形式。我嘗試了幾種實施from_statement
到outerjoin
的方法,但沒有一個真正起作用。任何人都可以幫助我嗎?
什麼是「ON」條款意思? – 2012-07-09 17:50:51
它沒有檢查執行'加入' – 2012-07-09 17:52:47
爲什麼你想要以這種格式表示結果而不是'Person'類和兩個關係'Person.beards'和'Person.mustashes'?基本上我的問題是:爲什麼使用'sqlalchemy'來做'SQL'這樣的事情?如果你定義了關係,你可以發出'session.query(Person).options(joinedload('beards'))選項(joinedload('mustashes'))。all()',並且生成的查詢將會非常相似,但結果仍然是'Person'的一個實例,而不是'tuple'。 – van 2012-07-09 21:54:35