2017-07-26 5 views
1

私はFEATUREとFEATURE_DETAILSテーブルを持っています。 FEATURE_DETAILSには多くの機能があります。条件を満たさない行を選択してください。

FEATURE_DETAILS 
feature_deatails_id | feature_id 
1      1 
1      2 
1      4 
2      1 
2      2 
2      4 
2      5 

feature_deatails_idの選択に問題があります。 5 feature_id。だから、結果は次のようになります。

feature_deatails_id | feature_id 
1      null 
+0

OKすべきですか?あなたの現在の声明を見せてもらえますか? –

+1

テーブル間の関係はどこですか?あなたの例は、ただ1つのテーブルのように見えます。 –

+0

@OtoShavadze テーブル間の関係は、1つ(FEATURE)から多くのもの(FEATURE_DETAILS)です。 フィーチャー付きの表には、フィーチャーIDとPKとしての詳細が含まれています。 – vpxfhu77

答えて

0

これはあなたの目的を解決する必要があり

with data as (
      select 1 as feature_details_id, 1 feature_id from dual 
    union select 1,2 from dual 
    union select 1,4 from dual 
    union select 2,1 from dual 
    union select 2,2 from dual 
    union select 2,4 from dual 
    union select 2,5 from dual 
) 
select distinct feature_details_id, NULL feature_id from data 
where feature_details_id not in (
     select feature_details_id from data 
     where feature_id = 5) 
; 

上記のクエリが何をするかである -

  1. 機能= 5
  2. 削除feature_details_idを選択それらのすべてのfeature_details_idと残りのものを選択する
+1

一般的なアドバイスのように、 'NOT IN'のようなものは' NULL'の存在下で誤っていると思います。 ")またはb)' NOT FIN IS NOT NULL'フィルタを 'NOT IN'式に含まれる各カラムに追加します。カラムにはすでにNOT NULL制約があります。 – gpeche

-2

FEATURE_ID!= 5

これはあなたの目的を解決する必要がありfeature_details から FEATURE_ID nullとして、feature_deatails_id選択します。 NOT INで

+0

これは動作しません。 –

0

は、問題は何

SELECT DISTINCT FEATURE_DETAILS_ID, NULL AS FEATURE_ID 
    FROM FEATURE_DETAILS 
    WHERE FEATURE_DETAILS_ID NOT IN (
     SELECT FEATURE_DETAILS_ID FROM FEATURE_DETAILS WHERE FEATURE_ID = 5 
    ); 
関連する問題