私は、次のヘルプのために最も感謝し、次のようになります。Oracle SQL - 存在しない場合に使用する最良の方法は?
SELECT A.EMPLOYEE, A.PHONE AS CELL, B.PHONE AS OFFICE, C.PHONE AS HOME
FROM PHONE_NUMBERS A, PHONE_NUMBERS B, PHONE_NUMBERS C
WHERE A.EMP_NUM = B.EMP_NUM
AND A.EMP_NUM = C.EMP_NUM
AND A.PHONE_TYPE = 'CELL'
AND B.PHONE_TYPE = 'OFFICE'
AND C.PHONE_TYPE = 'HOME'
私の問題は、以下の通りです:従業員はCELLとHOME電話機タイプを持っていますが、エントリがオフィスの電話タイプのために存在しない、クエリは返さない場合彼はオフィスが存在しないためです。私はCASE文を試しましたが、電話の種類がなければ、CASEは何も比較することはありません。 IF NOT EXISTSに関して多くの投稿を読んだことがありますが、これが正しい方法であるかどうかはわかりません。私はすべてのEMP_NUMを返すようにクエリを望み、特定のPHONE_TYPEが存在しない場合はnullを返します。
ない私が探していたものを、非常に(+)との結合にこれは一例ですが、それは私があったより遠くに沿っです。私はそれを使って遊んで、全体を並べ替えたときにコメントします。ありがとうございました。 – glennsnoise
あなたが既に理解していない限り、 'Full Join'でGoogleがこれを理解するために...外部結合が何であるか知っていれば、' Full Join'または 'Full Outer Join'は双方向外部結合です。左または右だけではなく、両方向で「外側」である結合。 –
私は今それらについて読んでおり、いくつかの例を試しています。私の問題は、私のテーブルでは、フィールドが空白ではないという事実にあると思う。データが入力されていない場合、フィールドは存在しません。テーブルの複数のインスタンス(AとB)、各占有フィールドPHONE(A.PHONEとB.PHONE)が別々のフィールド(PHONE_TYPE)で区別されている場合、どのようにPHONE_TYPEに対してNULLを生成するのですか従業員のために存在しない?これは空白ではなく、存在しません。 – glennsnoise