【发布时间】:2019-02-21 19:16:32
【问题描述】:
之前我曾就我试图将其转换为 Postgres 查询的 Oracle 查询寻求帮助:
SELECT c.code, c.recommendation, s.suggested, s.sugg_by, a.approved, a.app_by
FROM (SELECT code, recommendation FROM recommendations) c,
(SELECT code, suggested, sugg_by FROM suggestions) s,
(SELECT code, approved, app_by FROM suggestions) a
WHERE c.code = s.code(+)
AND c.code = a.code(+);
有人推荐了这个,效果很好:
SELECT
c.code,
c.recommendation,
s.suggested,
s.sugg_by,
a.approved,
a.app_by
FROM recommendations c
LEFT JOIN suggestions s on c.code = s.code
LEFT JOIN suggestions a ON c.code = a.code;
我忘了提一件事:我需要在 USERS 表中添加一个连接来获取用户名。
sugg_by = u.user_id
app_by = u.user_id
所以,是这样的:
SELECT c.code, c.recommendation, s.suggested, s.sugg_by, s.full_name, a.approved, a.app_by, a.full_name
FROM (SELECT code, recommendation FROM recommendations) c,
(SELECT code, suggested, sugg_by, full_name FROM suggestions s, users u WHERE s.sugg_by = u.user_id) s,
(SELECT code, approved, app_by, full_name FROM approvals a, users u WHERE a.app_by = u.user_id) a
WHERE c.code = s.code(+)
AND c.code = a.code(+);
基本上我还需要来自 USERS 表的名称。在 Oracle 中很容易,只需尝试为 Postgres 整合这些。
【问题讨论】:
-
Easy enough in Oracle我建议 swithc 使用显式 JOIN。从长远来看,它会得到回报。 Oracle Joins - Comparison between conventional syntax VS ANSI Syntax
标签: sql postgresql outer-join