Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
Sql 如何获取不带';t使用sum匹配查询中的where条件_Sql_Ms Access - Fatal编程技术网

Sql 如何获取不带';t使用sum匹配查询中的where条件

Sql 如何获取不带';t使用sum匹配查询中的where条件,sql,ms-access,Sql,Ms Access,上面的查询带来了所有具有特定条件类型的动物。像这样: SELECT k.condition, SUM(IIf(AnimalType=3,1,0)) AS Carnivore, SUM(IIf(AnimalType=4,1,0)) as Herbivore From Animals a inner join knownconditions k on a.id = k.id where a.id in (3, 11, 12) AND (AnimalType=3 OR

上面的查询带来了所有具有特定条件类型的动物。像这样:

SELECT k.condition, 
       SUM(IIf(AnimalType=3,1,0)) AS Carnivore, 
       SUM(IIf(AnimalType=4,1,0)) as Herbivore
From Animals a inner join knownconditions k on a.id = k.id
where a.id in (3, 11, 12)
AND (AnimalType=3 OR AnimalType = 4)
Group by a.id, k.id

为了这个例子,考虑在<代码>已知条件< /代码>表中有一个记录,如下面的

Condition   | Carnivore | Herbivore
------------| ----------|-------------
Condition1  | 33        | 3
Condition2  | 2         | 4
幸运的是,
Animals
表中没有动物有条件
Condition3
。因此,我上面的查询甚至没有列出
条件3

我如何修改我的查询,以便得到以下结果:

ID    | Condition
------|------------
3     | Condition3

转换为外部联接:

Condition   | Carnivore | Herbivore
------------| ----------|-------------
Condition1  | 33        | 3
Condition2  | 2         | 4
Condition3  | 0         | 0

这将生成已知条件下的所有条件,以及对于每种动物类型,具有每个条件的已知条件下的记录总数。

转换为外部联接:

Condition   | Carnivore | Herbivore
------------| ----------|-------------
Condition1  | 33        | 3
Condition2  | 2         | 4
Condition3  | 0         | 0

这将生成已知条件下的所有条件,以及对于每种动物类型,具有每个条件的已知条件下的记录总数。

将左连接作为动物与已知条件。这样动物就可以根据情况进行计数了。如果条件不满足,则返回0

SELECT k.condition,  
   SUM(IIf(AnimalType=3,1,0)) AS Carnivore,  
   SUM(IIf(AnimalType=4,1,0)) as Herbivore 
From knownconditions k 
  Left join Animals a  
      on a.id = k.id 
         And a.id in (3, 11, 12) 
         And AnimalType In (3, 4) 
Group by k.id, a.id 

请评论,如果工作。我还没有测试过。

以左键连接作为动物Vs.知识条件。这样动物就可以根据情况进行计数了。如果条件不满足,则返回0

SELECT k.condition,  
   SUM(IIf(AnimalType=3,1,0)) AS Carnivore,  
   SUM(IIf(AnimalType=4,1,0)) as Herbivore 
From knownconditions k 
  Left join Animals a  
      on a.id = k.id 
         And a.id in (3, 11, 12) 
         And AnimalType In (3, 4) 
Group by k.id, a.id 

请评论,如果工作。我还没有测试过它。

使用文本和联合的不同方法:

SELECT k.condition, 
       SUM(IIf(AnimalType=3,1,0)) AS Carnivore, 
       SUM(IIf(AnimalType=4,1,0)) as Herbivore
From Animals a LEFT JOIN knownconditions k on a.id = k.id
AND a.id in (3, 11, 12)
AND (AnimalType=3 OR AnimalType = 4 ) 
Group by a.id, k.id

使用文字和并集的不同方法:

SELECT k.condition, 
       SUM(IIf(AnimalType=3,1,0)) AS Carnivore, 
       SUM(IIf(AnimalType=4,1,0)) as Herbivore
From Animals a LEFT JOIN knownconditions k on a.id = k.id
AND a.id in (3, 11, 12)
AND (AnimalType=3 OR AnimalType = 4 ) 
Group by a.id, k.id

你能发布你的表格定义吗?仅凭这一点就有点难以理解。谢谢。我很乐意,但实际的桌子要大得多,复杂得多。这就是为什么我提出了一个设计来指出我的问题。你能发布你的表格定义吗?仅凭这一点就有点难以理解。谢谢。我很乐意,但实际的桌子要大得多,复杂得多。这就是为什么我想出了一个设计来指出我的问题。那仍然不起作用。我读过关于外部连接的文章,并尝试了一下,但没有成功。我只想再次强调一点,Animal表根本不包含ID 3,这仍然不起作用。我读过关于外部连接的文章,并尝试了一下,但没有成功。我只想再次强调一点,动物表根本不包含ID 3