SQLAlchemy ORM または SQL 式を使用して提示された結果を取得するには、次の 2 つのテーブル A と B で二重外部結合を行う必要があります。
テーブル B は、同じ A レコードに対する結合された 2 つの結果セット (c_id によって区別される) を取得するために、2 回外部結合する必要があります。外部結合は、最初 (c_id = 66) または 2 番目 (c_id = 70) の外部結合で B の結果が欠落している NULL を取得するために使用されます。
テーブル:
id
--
1
2
3
4
B テーブル:
id | a_id | c_id
---+------+------
1 | 1 | 66
2 | 2 | 66
3 | 3 | 70
4 | 4 | 66
5 | 4 | 70
クエリ結果は次のようになります。
a_id | b1_id (66) | b2_id (70)
-----+------------+-----------
1 | 1 | NULL
2 | 2 | NULL
3 | NULL | 3
4 | 4 | 5
適切な生の SQL クエリが次のようになるところまで来ました。
SELECT
A.id AS a_id,
B_1.id AS b1_id,
B_2.id AS b2_id,
FROM
A
LEFT OUTER JOIN B AS B_1 ON A.id = B_1.a_id AND B_1.c_id = 66
LEFT OUTER JOIN B AS B_2 ON A.id = B_2.a_id AND B_2.c_id = 70
WHERE
B_1.id is not NULL or
B_2.id is not NULL;
さて、これを SA ORM または SA SQL 式でコーディングする方法を知っていますか?