Как я могу сделать LEFT OUTER JOIN выбрать - PullRequest
0 голосов
/ 01 марта 2012

Как я могу сделать выбор, который: выберите все Prota_id, который существует в моей таблице с именем San_Proposta, и все Proposta_id, который существует в моей таблице. San_Negocio, КОГДА этот PROPTA_ID в San_Negocio имеет столбец ValidaCaptacao = 0 И ValidaVenda = 1 или столбец ValidaVenda= 0 AND ValidaCaptacao = 1 И столбец Proposta_Id в San_Negocio не может быть NULL ??

Я не знаю, нужно ли мне использовать LEFT OUTER JOIN, но следуйте моей попытке, которая не работаетправильно, потому что у меня есть некоторые данные в San_Proposta.Proposta_Id, которых нет в San_Negocio.Proposta_Id, но эти данные не отображаются.

    SELECT San_Proposta.Proposta_Id 
    FROM San_Proposta
    LEFT OUTER JOIN San_Negocio
    ON San_Proposta.Proposta_Id = San_Negocio.Proposta_Id
    WHERE San_Negocio.Proposta_Id IS NOT NULL
    AND (San_Negocio.ValidaCaptacao = 1 AND San_Negocio.ValidaVenda = 0) 
    OR (San_Negocio.ValidaCaptacao = 0 AND San_Negocio.ValidaVenda = 1)

Ответы [ 2 ]

4 голосов
/ 01 марта 2012

Когда вы проверяете столбцы из таблицы LEFT JOINed в предложении WHERE, вы заставляете это соединение вести себя так, как если бы оно было INNER JOIN.Вместо этого сделайте эти тесты частью условий соединения.Вы также захотите сбросить WHERE San_Negocio.Proposta_Id IS NOT NULL, так как это также приведет к ВНУТРЕННЕМУ СОЕДИНЕНИЮ.

SELECT San_Proposta.Proposta_Id 
    FROM San_Proposta
        LEFT OUTER JOIN San_Negocio
            ON San_Proposta.Proposta_Id = San_Negocio.Proposta_Id
                AND (San_Negocio.ValidaCaptacao = 1 AND San_Negocio.ValidaVenda = 0) 
                 OR (San_Negocio.ValidaCaptacao = 0 AND San_Negocio.ValidaVenda = 1)
0 голосов
/ 01 марта 2012
SELECT San_Proposta.Proposta_Id 
FROM San_Proposta
INNER JOIN San_Negocio
ON San_Proposta.Proposta_Id = San_Negocio.Proposta_Id
WHERE (San_Negocio.ValidaCaptacao = 1 AND San_Negocio.ValidaVenda = 0) 
OR (San_Negocio.ValidaCaptacao = 0 AND San_Negocio.ValidaVenda = 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...