在视图和三个表之间连接

时间:2018-02-08 12:58:44

标签: sql join

我有两个视图,结果如下所示

enter image description here

我有FeatureId的查找表,其中还包含其他信息,但在这里我只采用了必需的列

enter image description here

我有包含其他信息的参数的查找表,但在这里我只采用了必需的列

enter image description here

每个featureId都会收集所有参数: 问题:现在我希望我的最终结果列出所有参数和featureId with totalcount +当有FeatureId时,参数在结果集中不存在则则totalcount应为零

实施例 1. ASt-1 在结果集中根本不存在,因此将有10条记录包含featureid ASt-1 ,其中包含TotalCount为零的所有参数

  1. ASt-11 在参数NO2的结果集中有一条记录,因此将有10条记录,其中featureid ASt-11 包含9个参数,其中TotalCount为零,一个参数i ,e NO2,值为1

1 个答案:

答案 0 :(得分:1)

使用cross join生成所有行。然后使用left joingroup by

引入现有信息
select f.featureid, p.parameterid, count(lu.featureid)
from (select featureid from features f) f cross join
     (select distinct parameterid from lookup) p left join
     lookup lu
     on lu.featureid = f.featureid and lu.parameterid = lu.parameterid
group by f.featureid, p.parameterid;