日期:2014-05-18  浏览次数:20454 次

查询语句涉及四个表,用了好几个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 企业表 a
inner join 行政区划表 b on a.行政区划代码=b.行政区划代码
inner join 产品表 c on a.企业ID=c.企业ID
inner join 产品成分表 d on c.产品ID=d.产品ID
group by b.行政区划名称

------解决方案--------------------
跟我们一样,也是一堆inner join
------解决方案--------------------
SQL code

如果是这样的表结构,要获得 行政区划名称,成分种类数,年产量
的统计数据,应该怎样写sql?
[code=SQL]
select b.行政区划名称,
count(distinct d.成分ID) 成分种类数,
sum(c.年产量) 年产量
from 企业表 a
inner join 行政区划表 b on a.行政区划代码=b.行政区划代码
inner join 产品表 c on a.企业ID=c.企业ID
inner join 产品成分表 d on c.产品ID=d.产品ID
group by b.行政区划名称