以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  开贴学习高大尚的SQL语句  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=45910)

--  作者:石四
--  发布时间:2014/2/13 12:12:00
--  开贴学习高大尚的SQL语句

接上个贴学SQL语句

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=45827&page=1&star=2

 

多表查询 inner join

Select [领用部门],[商品名称] ,sum(数量) as 数量, sum(数量*单价) as 金额 from (select [出库单编号], b.[商品名称], [数量], [单价] from {出库明细} as b inner join {商品表} as c on b.[商品代码] = c.[商品代码]) as a inner join {出库} as d ON a.[出库单编号] = d.[出库单编号] group by [领用部门],[商品名称]

 

貌似4个表:a,b,c,d

a表及查询表:领用部门,商品名称,数量,金额

b表:出库单编号,商品名称(表b),数量,单价(从商品表按商品代码查找)

c表(商品表)

d表:出库表

不知对不对,头大了.....

[此贴子已经被作者于2014-2-13 12:13:50编辑过]

--  作者:石四
--  发布时间:2014/2/13 13:51:00
--  

参考帮助文件:

Month

返回给定日期的月份。

例如统计1999年各月的销售额:

SELECT Month(日期) AS 月, SUM(数量) AS 数量 FROM {订单} WHERE Year(日期) = 1999 GROUP BY Month(日期)

 

按月分组汇总

Select Month(日期) AS 月,[领用部门],[商品名称] ,sum(数量) as 数量, sum(数量*单价) as 金额 from (select [出库单编号], b.[商品名称], [数量], [单价] from {出库明细} as b inner join {商品表} as c on b.[商品代码] = c.[商品代码]) as a inner join {出库} as d ON a.[出库单编号] = d.[出库单编号] group by Month(日期) ,[领用部门],[商品名称]
 
结果OK!

 


--  作者:石四
--  发布时间:2014/2/13 16:26:00
--  

插播,问些小白问题:

SQL语句怎么运用?能象代码一样用于控件事件中么?


--  作者:狐狸爸爸
--  发布时间:2014/2/13 16:28:00
--  

可以


--  作者:石四
--  发布时间:2014/2/13 16:32:00
--  
哦,那样会SQL的话很强大了呀!
--  作者:jspta
--  发布时间:2014/2/13 16:58:00
--  
以下是引用狐狸爸爸在2014-2-13 16:28:00的发言:

可以


什么时候能够支持具有Group by的语句的DataTable的Load那,现在要么重新Fill,要么在数据库写死,不算太方便



--  作者:石四
--  发布时间:2014/2/14 13:17:00
--  

语法:

SELECT 字段列表 FROM {表1} INNER JOIN {表2} ON {表1}.列名 = {表2}.列名

ON关键词指定两个表通过哪一列进行连接,指定的字段必须具备相同的数据类型和长度。

如果某个字段在不止一个表中出现,必须在Select语句中明确表的名称,格式为: {表名}.列名

 

请问如果两个表通过不止一个列连接,能用ON连接不?

 

两个连接列:零件名称,工序

我这么用:

Select Month(完工日期) AS 月,[姓名],[零件名称] ,[工序],sum(数量) as 数量, sum(数量*单价) as 金额 from (select [批次], b.[零件名称], [工序],[数量], [单价] from {计件明细} as b inner join {工序表} as c on b.[零件名称] = c.[零件名称],b.[工序] = c.[工序]) as a inner join {计件} as d ON a.[批次] = d.[批次] group by Month(完工日期) ,[姓名],[零件名称],[工序]

提示运行错误:

语法错误 (操作符丢失) 在查询表达式 \'b.[零件名称] = c.[零件名称],b.[工序] = c.[工序]\' 中。


--  作者:jspta
--  发布时间:2014/2/14 13:45:00
--  
b.[零件名称] = c.[零件名称] and b.[工序] = c.[工序]
--  作者:石四
--  发布时间:2014/2/16 11:10:00
--  
以下是引用jspta在2014-2-14 13:45:00的发言:
b.[零件名称] = c.[零件名称] and b.[工序] = c.[工序]

哦,谢谢.

又出现新的提示,特定列名.

不同表有相同的列名,需指定,要做连连看游戏..........


--  作者:jspta
--  发布时间:2014/2/16 12:36:00
--  
请直接在数据库中用视图表学习如何连接各个表