|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
select a.*,出库数量,出库金额 from ([产品资料$]x inner join (select 产品,sum(数量) as 进库数量,sum(金额) as 进库金额 from [进库$] group by 产品)y on x.产品=y.产品)a inner join (select 产品,sum(数量) as 出库数量,sum(金额) as 出库金额 from [出库$] group by 产品)b on a.产品=b.产品
语法错误,与别名无关。
JOIN连接支持连续多个JOIN.
语法如下:
SELECT 字段 FROM
(……表1 INNER JOIN 表2
ON 条件)
……
INNER JOIN
表X
ON 条件
所以,你的语句应改为:
- select x.产品,进库数量,进库金额,出库数量,出库金额 from ([产品资料$]x inner join
- (select 产品,sum(数量) as 进库数量,sum(金额) as 进库金额 from [进库$] group by 产品)y
- on x.产品=y.产品)
- inner join
- (select 产品,sum(数量) as 出库数量,sum(金额) as 出库金额 from [出库$] group by 产品)b
- on x.产品=b.产品
复制代码
此处的a是连续JOIN连接的一部分,是JOIN连接内其中两个表的连接部分,与其它表还存连接关系,故不能对此部分使用表别名,使其单独独立出来再与其它表连接。
- ([产品资料$]x inner join (select 产品,sum(数量) as 进库数量,sum(金额) as 进库金额 from [进库$] group by 产品)y on x.产品=y.产品)a
复制代码
若不使用连续JOIN连接的语法,也可以这样:
- SELECT A.*,出库数量,出库金额 FROM
- (SELECT Y.* FROM [产品资料$]x inner join
- (select 产品,sum(数量) as 进库数量,sum(金额) as 进库金额 from [进库$] group by 产品)y
- on x.产品=y.产品)A
- INNER JOIN
- (select 产品,sum(数量) as 出库数量,sum(金额) as 出库金额 from [出库$] group by 产品)b
- on A.产品=b.产品
复制代码 这种方法是每JOIN完一个,生成一个新的独立表/查询,再去与下一个表/查询进行JOIN连接。当然,若是需要JOIN的表/查询太多的话,此方法就远不如上面的连续多个JOIN语法方便。
|
评分
-
2
查看全部评分
-
|