多个选择查询在SQL中无法正确执行

时间:2017-03-21 11:05:50

标签: sql

多个选择查询在SQL中无法正确执行。

我有3个表,Registration,form1(Table_1)和form2(Table_2)。

TABLE_1

Data1    Email          Data2   Data3

t1     mazhar@gmail.com   t2       t3

TABLE_2

Data1     Email         Data2   Data3
f1     mazhar@gmail.com   f2       f3
f3     Raj@gmail.com      f2       f1

Table_Reg

Name    Email              Location
mazhar  mazhar@gmail.com    Hyderabad
Rahul   Rahul@gmail.com     Pune
Raj     Raj@gmail.com        Lal

Table_1和Table_2是表格,Table_Reg是基本注册。

我希望显示值计数表单未启动且表单已开始。

如果用户将任何表单数据提交到Table_1或Table_2,则启动 如果用户未将任何表单数据提交到Table_1或Table_2,则启动。我正在使用sql server 2008。

我需要输出如下:

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

1 个答案:

答案 0 :(得分:0)

您想要计算在其他表中找到多少个table_reg用户。这可以通过查看每个记录来完成,然后计算:

unclean.leader.election.enable=true

但是table_1和table_2中可能没有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;