複数の子テーブルの主キーを保持する 1 つの親テーブルがあります。子テーブルの数は、実行時に任意に設定できます。SQLalchemy コアを使用して、複数の子テーブルをこの親に結合するにはどうすればよいですか?
有効な FK 制約を持つクラス sqlalchemy.schema.Table のテーブルがあるとします。このクエリを作成するにはどうすればよいですか?
私は試しました。
childJoins= [sa.join(parentTable,childTables[0]),sa.join(parentTable,childTables[1])]
# childTables is a list() of Table objects who are guaranteed linked by pk
qry = sa.select(["*"],from_obj=childJoins)
どちらが得られますか;
SELECT *
FROM
parentTable JOIN child1 ON child1.P_id = parentTable.C1_Id,
parentTable JOIN child2 ON child2.P__id = parentTable.C2_Id
したがって、parentTable は 2 回リストされます...
join() などを使用してさらに多くのバリエーションを試しました。ドキュメントを見ましたが、まだ欲しいものを得ることができません。
SELECT *
FROM parentTable
JOIN child1 ON parentTable.C1_Id=child1.P_Id
JOIN child2 ON parentTable.C2_Id=child2.P_Id
...
JOIN childN ON parentTable.CN_Id=childN.P_Id