簡體   English   中英

連接具有相同字段的兩個表

[英]Join between two tables with same fields

我有這些表:

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 相關的所有數據,但另外還有來自表 FR 的數據由 Rif1 和 Rif2 相關字段連接。

我想要表 FT 中與過濾后的 Codcli 相關的所有數據

這聽起來像一個LEFT JOIN

SELECT FT."Rif1", FR."Rif1", FT."Rif2", FR."Rif2", 
       "Data1", "Data2", "Qta", "Price", "CodCli"
FROM FT LEFT JOIN
     FR
     ON FT."Rif1" = FR."Rif1" AND FT."Rif2" = FR."Rif2"
WHERE FT."CodCli" = '653';

如果這對您有用,請嘗試使用 LEFT JOIN:

SELECT FT."Rif1", FR."Rif1", FT."Rif2", FR."Rif2", "Data1", "Data2", "Qta", "Price", "CodCli"
FROM FT LEFT JOIN FR ON FT."Rif1" = FR."Rif1" AND FT."Rif2" = FR."Rif2" where FT."CodCli" = '653';

在您的情況下,postgresql 從第二個表中選擇數據,然后使用您的 where 條件從第一個表中獲取所有數據。 這樣你就會得到錯誤的結果。 使用left join 在這種情況下,系統從具有條件的第一個表中獲取數據,然后加入第二個表。 所以

SELECT FT."Rif1", FR."Rif1", FT."Rif2", FR."Rif2", "Data1", "Data2", "Qta", "Price", "CodCli"
FROM FT
LEFT JOIN FR ON FT."Rif1" = FR."Rif1" AND FT."Rif2" = FR."Rif2"
WHERE FT."CodCli" = '653';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM