我需要对以下 2 个表 A 和 B 进行双重外连接,以使用 SQLAlchemy ORM 或 SQL 表达式获得呈现的结果。
表 B 应该被外部连接两次,以获得相同的 A 记录的连接 2 个结果集(由 c_id 区分)。外连接用于获取在第一个 (c_id = 66) 或第二个 (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 表达式中对此进行编码吗?