Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自2个表的SQL计数,带true/false_Sql_Count - Fatal编程技术网

来自2个表的SQL计数,带true/false

来自2个表的SQL计数,带true/false,sql,count,Sql,Count,我有两张桌子: 表1:钥匙、品牌、类型、欧洲、参考编号 表2:钥匙、所有者、地址、参考编号 两个表中的RefNr是唯一标识符,表1中的RefNr是真/假字段 我的问题是如何计算拥有欧洲车的所有车主的数量?根据给出的信息,我想说您正在寻找具有简单where条件的连接 select count(distinct t2.owner) from table1 t1 join table2 t2 on t1.refnr = t2.refnr where t1.european = true; 如

我有两张桌子:

  • 表1:钥匙、品牌、类型、欧洲、参考编号
  • 表2:钥匙、所有者、地址、参考编号
两个表中的RefNr是唯一标识符,表1中的RefNr是真/假字段


我的问题是如何计算拥有欧洲车的所有车主的数量?

根据给出的信息,我想说您正在寻找具有简单where条件的连接

select count(distinct t2.owner)
from table1 t1
  join table2 t2 on t1.refnr = t2.refnr
where t1.european = true;

如果有人拥有一辆以上的汽车,则必须使用不同的t2.owner

根据给出的信息,我认为您正在寻找具有简单where条件的联接

select count(distinct t2.owner)
from table1 t1
  join table2 t2 on t1.refnr = t2.refnr
where t1.european = true;

如果有人拥有一辆以上的汽车,则必须使用不同的t2.owner

Sql Server的解决方案如下所示:

Select count(t2.Owner) as EuropeanCarOwner
From Table1 t1
Inner join Table2 t2 on t2.RefNr = t1.RefNr
where t1.European = 1
请注意,is-European列不是boolean的类型,而是varchar,您可以在while子句中执行t1.European='true'


如果一个人可以拥有多辆车,并且每辆车都作为不同的记录输入,则如果需要,每个车主只能计数一次,方法是:
count(distinct t2.owner)
Sql Server的解决方案如下:

Select count(t2.Owner) as EuropeanCarOwner
From Table1 t1
Inner join Table2 t2 on t2.RefNr = t1.RefNr
where t1.European = 1
请注意,is-European列不是boolean的类型,而是varchar,您可以在while子句中执行t1.European='true'


如果一个人可以拥有多辆车,并且每辆车都作为不同的记录输入,那么如果需要,每个车主只能被计数一次,方法是:
count(distinct t2.owner)

并不是说它说明了您使用的是哪个DBMS,这应该在SSMS中起作用

    SELECT  COUNT(*) AS EuroOwners
    FROM Table1 t1
    INNER JOIN Table2 t2 ON t1.RefNr = t2.RefNr AND t1.European = 1

它并不是说您正在使用哪个DBMS,而是应该在SSMS中工作

    SELECT  COUNT(*) AS EuroOwners
    FROM Table1 t1
    INNER JOIN Table2 t2 ON t1.RefNr = t2.RefNr AND t1.European = 1

. . 考虑到查询的措辞(“所有所有者计数”),我认为你是对的。考虑到查询的措辞(“所有所有者的计数”),我认为您是对的。您的解决方案非常有效,我唯一需要更改的是:
internaljointtable2t2on t1.RefNr=t2.RefNr其中t1.European=TRUE
DBMS=Access with classic ASP。您的解决方案非常有效,我唯一需要更改的是:
internaljointtable2t2on t1.RefNr=t2.RefNr其中t1.European=TRUE