Foxtable(狐表)用户栏目专家坐堂 → 开贴学习高大尚的SQL语句


  共有7282人关注过本帖树形打印复制链接

主题:开贴学习高大尚的SQL语句

帅哥哟,离线,有人找我吗?
石四
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
开贴学习高大尚的SQL语句  发帖心情 Post By:2014/2/13 12:12:00 [显示全部帖子]

接上个贴学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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
石四
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By: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!

 


 回到顶部
帅哥哟,离线,有人找我吗?
石四
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/2/13 16:26:00 [显示全部帖子]

插播,问些小白问题:

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


 回到顶部
帅哥哟,离线,有人找我吗?
石四
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/2/13 16:32:00 [显示全部帖子]

哦,那样会SQL的话很强大了呀!

 回到顶部
帅哥哟,离线,有人找我吗?
石四
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By: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.[工序]' 中。


 回到顶部
帅哥哟,离线,有人找我吗?
石四
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/2/16 11:10:00 [显示全部帖子]

以下是引用jspta在2014-2-14 13:45:00的发言:
b.[零件名称] = c.[零件名称] and b.[工序] = c.[工序]

哦,谢谢.

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
石四
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/2/18 11:22:00 [显示全部帖子]

以下是引用jspta在2014-2-16 12:36:00的发言:
请直接在数据库中用视图表学习如何连接各个表

我现在用access,就是说先在access中用视图表学习连接各个表?


 回到顶部
帅哥哟,离线,有人找我吗?
石四
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/2/18 13:07:00 [显示全部帖子]

连连看游戏玩不下!

 

提示:至少一个参数没有被指定值。

 

表1(计件):批次,零件名称

表2(计件明细):姓名,批次,工序码,工序,数量,完工日期

表3(工序表):工序码,零件名称,工序,单价

查询表:月,姓名,零件名称,工序,数量,金额

SQL语句:

 

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

 

帮忙看看,哪里需要指定值?

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

 回到顶部
帅哥哟,离线,有人找我吗?
石四
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/2/18 13:33:00 [显示全部帖子]

修改SQL语句后提示:试图执行的查询中不包含作为合计函数一部分的特定表达式 '零件名称' 。

修改后的SQL语句:

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


 回到顶部
帅哥哟,离线,有人找我吗?
石四
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:972 积分:7048 威望:0 精华:0 注册:2013/3/31 10:33:00
  发帖心情 Post By:2014/2/19 9:56:00 [显示全部帖子]

以下是引用有点甜在2014-2-18 20:56:00的发言:
 试试这样

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

用以上语句测试又出现前面的错误提示:至少一个参数没有被指定值。


 回到顶部
总数 17 1 2 下一页