【发布时间】:2020-03-03 11:13:28
【问题描述】:
我有这些桌子:
FT
id|Rif1|Rif2|CodCli|Data1|Data2
和
FR
id|Rif1|Rif2|Qta|Price
我想使用两个表中的 Rif1 和 Rif2 加入来自 Codcli 的结果过滤(包含相同的值) 我这样做:
SELECT FT."Rif1", FR."Rif1", FT."Rif2", FR."Rif2", "Data1", "Data2", "Qta", "Price", "CodCli"
FROM FT, FR
WHERE FT."CodCli" = '653' AND (FT."Rif1" = FR."Rif1" AND FT."Rif2" = FR."Rif2");
但结果是错误的,我想要表 FT 中与过滤后的 Codcli 相关的所有数据,但另外还有由 Rif1 和 Rif2 相关字段连接的表 FR 中的数据。
【问题讨论】:
-
与你的问题无关,但是:你真的应该避免那些可怕的引用标识符。他们的麻烦比他们的价值要多得多。 wiki.postgresql.org/wiki/…
-
您的代码中有拼写错误
(FT."Rif1" = FR."Rif1 AND FT."Rif2" = FR."Rif2")应该是(FT."Rif1" = FR."Rif1" AND FT."Rif2" = FR."Rif2")不确定是否相关。 -
我知道结构很乱,但我无法修改它,我必须使用这些字段提取数据:(
-
也许我必须使用一些 INNER JOIN 或 LEFT OUTER JOIN?
标签: sql postgresql join