Объединить две таблицы с одинаковыми полями - PullRequest
0 голосов
/ 03 марта 2020

у меня есть эти таблицы:

FT
id|Rif1|Rif2|CodCli|Data1|Data2

и

FR
id|Rif1|Rif2|Qta|Price

Я хотел бы объединить фильтрацию результатов из Codcli с использованием Rif1 и Rif2 из обеих таблиц (которые содержат одинаковые значения ) Я делаю это:

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.

Ответы [ 3 ]

0 голосов
/ 03 марта 2020

Попробуйте использовать 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';
0 голосов
/ 03 марта 2020

В вашем случае 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';
0 голосов
/ 03 марта 2020

Я хотел бы, чтобы все данные из таблицы 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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...