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