产品表:
pd_id pd_name pd_spec ...
0001 主板 ASUS
0002 显卡 ATI
0003 键盘 SAMSUNG
0004 显卡 TNT2
.............货架表:
hj_id hj_name
1 1#
2 2#
3 3#
.................货架摆放表:
auto_id hj_id pd_id qty
1 1 0001 5
2 2 0003 7
3 3 0001 5
4 2 0002 1
5 3 0002 4
...........怎样可以得到以下结果,也就是每个产品在货架上的摆放情况:
hj_name pd_name pd_spec qty
1# 主板 ASUS 5
2# 主板 ASUS 0
3# 主板 ASUS 5
1# 显卡 ATI 0
2# 显卡 ATI 1
3# 显卡 ATI 4
1# 键盘 SAMSUNG 0
2# 键盘 SAMSUNG 7
3# 键盘 SAMSUNG 0
1# 显卡 TNT 0
2# 显卡 TNT 0
3# 显卡 TNT 0
...................请帮帮帮忙,谢谢谢谢!PS:时常发现做统计时要连接多个表,且要进行汇总或是其他计算,比方说上面的问题,如果我要是再加表进行统计,有没有个通用的方法呢?
pd_id pd_name pd_spec ...
0001 主板 ASUS
0002 显卡 ATI
0003 键盘 SAMSUNG
0004 显卡 TNT2
.............货架表:
hj_id hj_name
1 1#
2 2#
3 3#
.................货架摆放表:
auto_id hj_id pd_id qty
1 1 0001 5
2 2 0003 7
3 3 0001 5
4 2 0002 1
5 3 0002 4
...........怎样可以得到以下结果,也就是每个产品在货架上的摆放情况:
hj_name pd_name pd_spec qty
1# 主板 ASUS 5
2# 主板 ASUS 0
3# 主板 ASUS 5
1# 显卡 ATI 0
2# 显卡 ATI 1
3# 显卡 ATI 4
1# 键盘 SAMSUNG 0
2# 键盘 SAMSUNG 7
3# 键盘 SAMSUNG 0
1# 显卡 TNT 0
2# 显卡 TNT 0
3# 显卡 TNT 0
...................请帮帮帮忙,谢谢谢谢!PS:时常发现做统计时要连接多个表,且要进行汇总或是其他计算,比方说上面的问题,如果我要是再加表进行统计,有没有个通用的方法呢?
浪费屏幕,浪费纸张、浪费CPU运行时间、浪费用电
哈哈
from (
select a.pd_id,b.hj_id from 货架表 a cross join 产品表 b
) a left join 货物摆放表 b
on a.hj_id=b.hj_id and a.pd_id=b.pd_id
join 货架表 c on a.hj_id=c.hj_id
join 产品表 d on a.pd_id=d.pd_id
insert 产品表
select '0001', '主板', 'ASUS' union all
select '0002', '显卡', 'ATI' union all
select '0003', '键盘', 'SAMSUNG' union all
select '0004', '显卡', 'TNT2' create table 货架表(hj_id varchar(10), hj_name varchar(10))
insert 货架表
select '1', '1#' union all
select '2', '2#' union all
select '3', '3#' create table 货架摆放表(auto_id int identity(1,1), hj_id varchar(10), pd_id varchar(10), qty int)
insert 货架摆放表
select '1', '0001', 5 union all
select '2', '0003', 7 union all
select '3', '0001', 5 union all
select '2', '0002', 1 union all
select '3', '0002', 4
goselect
c.hj_name,d.pd_name,d.pd_spec,isnull(b.qty,0) as qty
from
(
select a.pd_id,b.hj_id from 货架表 b cross join 产品表 a
) a
left join
货架摆放表 b on a.hj_id=b.hj_id and a.pd_id=b.pd_id
join
货架表 c on a.hj_id=c.hj_id
join
产品表 d on a.pd_id=d.pd_id
order by
d.pd_specdrop table 产品表,货架表,货架摆放表/*
hj_name pd_name pd_spec qty
1# 主板 ASUS 5
2# 主板 ASUS 0
3# 主板 ASUS 5
1# 显卡 ATI 0
2# 显卡 ATI 1
3# 显卡 ATI 4
1# 键盘 SAMSUNG 0
2# 键盘 SAMSUNG 7
3# 键盘 SAMSUNG 0
1# 显卡 TNT2 0
2# 显卡 TNT2 0
3# 显卡 TNT2 0
*/
create table 产品表(pd_id varchar(10), pd_name varchar(10), pd_spec varchar(10))
insert 产品表
select '0001', '主板', 'ASUS' union all
select '0002', '显卡', 'ATI'union all
select '0003', '键盘', 'SAMSUNG' union all
select '0004', '显卡', 'TNT2' create table 货架表(hj_id varchar(10), hj_name varchar(10))
insert 货架表
select '1', '1#' union all
select '2', '2#'union all
select '3', '3#' create table 货架摆放表(auto_id int identity(1,1), hj_id varchar(10), pd_id varchar(10), qty int)
insert 货架摆放表 select '1', '0001', 5
union all select '2', '0003', 7
union all select '3', '0001', 5
union all select '2', '0002', 1
union all select '3', '0002', 4go
select hj_name,pd_name,pd_spec,
isnull((select qty from 货架摆放表 c where c.hj_id=a.hj_id and c.pd_id=b.pd_id),0) as'qty'
from 货架表 a , 产品表 b order by b.pd_id,a.hj_name------结果/*
hj_name pd_name pd_spec qty
1# 主板 ASUS 5
2# 主板 ASUS 0
3# 主板 ASUS 5
1# 显卡 ATI 0
2# 显卡 ATI 1
3# 显卡 ATI 4
1# 键盘 SAMSUNG 0
2# 键盘 SAMSUNG 7
3# 键盘 SAMSUNG 0
1# 显卡 TNT 0
2# 显卡 TNT 0
3# 显卡 TNT 0*/
可以分析一下我们的哪个快吗!
我也是每天查数查的痛不欲生
两种方法应该差不多
你可以拿多一点数据试试看