当前位置: 代码迷 >> Sql Server >> 查询语句涉及四个表,用了好几个inner join连接,有更好的办法吗?解决方法
  详细解决方案

查询语句涉及四个表,用了好几个inner join连接,有更好的办法吗?解决方法

热度:27   发布时间:2016-04-27 14:12:07.0
查询语句涉及四个表,用了好几个inner join连接,有更好的办法吗?
比如全国各地区共有10家企业,每家企业生产10样产品,每个产品含10种物质,现在要统计该地区所有企业所有产品所含物质的种类总数。

企业与产品,一对多;
产品与所含物质,一对多;

查询语句:

select 地区,count( distinct 物质) inner join (产品表 inner join (企业表 inner join 行政区划表 on 行政区划代码)on 企业ID)
group by 地区

这么写对吗?

有更好的办法吗?

------解决方案--------------------
例如你说的每个都有对应的下一级别,可以Inner JOIN。这样写不慢。
------解决方案--------------------
如果是这样的表结构,要获得 行政区划名称,成分种类数,年产量
的统计数据,应该怎样写sql?
SQL code
select b.行政区划名称,count(distinct d.成分ID) 成分种类数,sum(c.年产量) 年产量from 企业表 ainner join 行政区划表 b on a.行政区划代码=b.行政区划代码inner join 产品表 c on a.企业ID=c.企业IDinner join 产品成分表 d on c.产品ID=d.产品IDgroup by b.行政区划名称
------解决方案--------------------
跟我们一样,也是一堆inner join
------解决方案--------------------
SQL code
如果是这样的表结构,要获得 行政区划名称,成分种类数,年产量的统计数据,应该怎样写sql?[code=SQL]select b.行政区划名称,count(distinct d.成分ID) 成分种类数,sum(c.年产量) 年产量from 企业表 ainner join 行政区划表 b on a.行政区划代码=b.行政区划代码inner join 产品表 c on a.企业ID=c.企业IDinner join 产品成分表 d on c.产品ID=d.产品IDgroup by b.行政区划名称
  相关解决方案