2017-08-27 8 views
-1

外部結合を理解しようとしましたが、私は質問があります。内部結合にはNULL列を設定することができます

このクエリの後、すべての列がnullでないと仮定すると:

SELECT a.service_type_id, b.customer_member_id, a.service_name 
FROM CUSTOMER_SERVICE_TYPE a, 
    MEMBER_CUSTOMER_SERVICES b 
WHERE a.service_type_id = b.service_type_id; 

は、列のいずれかで、ヌルのフィールドを取得することが可能ですか?

+2

サンプルクエリはINNER JOINで、両方のテーブルのservice_type_idの一致をチェックします。列にはNULL値はありません。 OUTER JOINを使用し、条件(a.service_type_id = b.service_type_id)と一致しないデータがある場合、その列にはNULLが存在します。 –

+0

JOINS https://stackoverflow.com/questions/17946221/sql-join-and-different-types-of-joinsについてのこのリンクを確認できます –

+0

今日のヒント:現代的で明示的な 'JOIN'構文に切り替えてください。 (エラーなしで)書きやすく、読みやすく(維持しやすい)、必要に応じて外部結合に変換する方が簡単です。 – jarlh

答えて

2

最初に、あなたの質問のタイトルは「外部結合」と表示されますが、クエリは内部結合です。

第2に、古い構文を使用して、クエリが不正な形式になっています。実際には:

SELECT cs.service_type_id, mcs.customer_member_id, cs.service_name 
FROM CUSTOMER_SERVICE_TYPE cs JOIN 
    MEMBER_CUSTOMER_SERVICES mcs 
    ON cs.service_type_id = mcs.service_type_id; 

第3に、あなたの質問に対する答えは「いいえ」です。クエリ内のソース列がいずれもNULLでない場合は、いずれの列もNULLにはなりません。実際にOUTER JOINだった場合、列はNULLになります。

注:

  • 常に適切な、明示的なJOIN構文を使用します。 は、FROM句にカンマを使用します。
  • テーブルのエイリアスは無意味な文字ではなく、列名の略語である必要があります。
関連する問題