2012-02-29 10 views
0

選択するにはどうすればよいですか:San_Propostaという名前のテーブル内にあるproposta_idとSan_Negocioテーブル内にあるproposta_idをすべて選択しますSan_Negocioのこのproposta_idに列があるときValidaCaptacao = 0とValidaVenda = 1またはValidaVenda = 0とValidaCaptacao = 1であり、San_Negocioの列Proposta_IdはNULLにできませんか?LEFT OUTER JOINを選択するにはどうすればいいですか

私はJOINをLEFT OUTERを使用する必要がある場合は知っているが、私はSan_Negocio.Proposta_Idに存在していないSan_Proposta.Proposta_Idでいくつかのデータを持っているので、正しく動作しません。私の試みを、従っていないが、このデータは表示されません。あなたはそれはINNER JOINをしたかのように振る舞うように参加するWHERE句、あなたの力にLEFT JOINしたテーブルから列をテスト

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) 
+0

だけ明確にする - Proposta_Idは、いずれかのテーブルに存在し、またはその両方が正しいことができますか?私はProposta_IdがSan_Propostaテーブルに少なくとも存在しなければならないという質問には何も表示されません。私が間違っているなら私を訂正してください。 –

+0

ALL San_Negocio.Proposta_IdはSan_Propostaに存在しますが、San_NegocioにはいくつかのSan_Proposta.Proposta_Idが存在します。 –

答えて

4

。代わりに、これらのテストを結合条件の一部にします。 WHERE San_Negocio.Proposta_Id IS NOT NULLをその結果としてINNER JOINにドロップしたい場合もあります。

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

+1すてきな説明です。 –

+0

しかし、私は今問題があります。 San_Negocio.ValidaCaptacaoはSan_Negocio.ValidaVendaと同じ値を持つことはできません。このクエリでは、同じ値を持つこの列(ValidaCaptacaoとValidaVenda)を持つデータを返します。どうすればValidaVendaとValidaCaptacaoのデータだけを返すことができますか? –

+0

@ Lucas_Santos:あなたが見ているこの同じ価値は何ですか? –

-1
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) 
関連する問題