2017-03-21 15 views
-2

複数の選択クエリがSQLで正しく実行されません。複数選択クエリがSQLで正しく実行されない

私は3つのテーブルRegistration、form1(Table_1)とform2(Table_2)を持っています。

のtable_1

Data1 Email   Data2 Data3 

t1  [email protected] t2  t3 

Table_2

Data1  Email   Data2 Data3 
f1  [email protected] f2  f3 
f3  [email protected]  f2  f1 

Table_Reg

Name Email    Location 
mazhar [email protected] Hyderabad 
Rahul [email protected]  Pune 
Raj  [email protected]  Lal 

のtable_1とTable_2フォームであり、Table_Regは、基本的な登録です。

私は値の数を表示したいフォームが開始されず、フォームが開始されました。

ユーザーがフォームデータをTable_1またはTable_2にサブミットすると、開始されました ユーザーがフォームデータをTable_1またはTable_2に送信しなかった場合、開始されました。私は2008年

が、私は以下のような出力を必要とするSQL Serverを使用しています:

formStarted formnotstarted 
    2    1 

私は以下のではなく、与えて正しい結果のようなクエリを書いた:あなたはの何をカウントする

select * from Table_Reg where and 
    (Email not in(select Email from Table_1) 
    or 
(Email not in(select Email from Table_2))) 
+0

そこにどんな友達もあります。 – user6254696

+0

テーブルのデザインが悪い。ユーザーごとに一度だけ電子メールを保管します。他のテーブルにIDを持ってください。 – jarlh

+0

そのような要求はありません。答えを更新してください。 @ jarlh – user6254696

答えて

0

table_regユーザーは他のテーブルにあります。

select 
    count(case when status = 'exists' then 1 end) as started, 
    count(case when status <> 'exists' then 1 end) as not_started 
from 
(
    select 
    case 
     when email in (select email from table_1) then 'exists' 
     when email in (select email from table_2) then 'exists' 
     else 'does not exist' 
    end as status 
    from table_reg 
) looked_up; 

をしかし、おそらくtable_regには存在しないのtable_1とtable_2には電子メールがないことができます。これは、すべてのレコードに対してこれを見て、その後、カウントすることによって行うことができます。別のメールを数えるだけで同じことができます:

select 
    forms.cnt as started, 
    reg.cnt - forms.cnt as not_started 
from 
(
    select count(*) as cnt 
    from table_reg 
) reg 
cross join 
(
    select count(*) as cnt 
    from (select email from table_1 union select email from table_2) x 
) forms; 
+0

最初のクエリでエラーが発生しました:メッセージ102、レベル15、状態1、行11 ')'の近くの構文が正しくありません。 @Thorsten Kettner – user6254696

+0

ああ、あまりにも多くの括弧がありました。ごめんなさい。私はこれを修正しました。 –

+0

ありがとうございます。簡単な方法を実現する別の方法がありますか?Thorsten Kettner – user6254696

関連する問題