以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]如何提取二个数具表后台的数具. (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2779) |
-- 作者:狐哥 -- 发布时间:2009/5/13 18:42:00 -- [求助]如何提取二个数具表后台的数具. 请教各位: cmd.CommandText = "SELECT 日期,收支,摘要,币种,金额 FROM {办工开支} WHERE 收支帐号 = \'" & cm1.value & "\' and 日期 >= #" & dt3.value & "# AND 日期 <= #" & dt4.value & "#" cmd1.CommandText = "SELECT 日期,收支,摘要,币种,金额 FROM {销帐录入} WHERE 收支帐号 = \'" & cm1.value & "\' and 日期 >= #" & dt3.value & "# AND 日期 <= #" & dt4.value & "#" |
-- 作者:菜鸟foxtable -- 发布时间:2009/5/13 20:58:00 -- 七、多表查询 有的时候,你可能希望查询表的列来自于多个表,可以通过JOIN语句来实现这样的功能。JOIN语句可以让你从已经定义了相互关系的工作表中检索记录,而不用管记录和工作表之间的关系是一对一、一对多还是多对多。 语法: SELECT 字段列表 FROM 表1 INNER JOIN 表2 ON 表1.列名 = 表2 .列名 因为字段来自于两个表,所以如果对于两个表都有的字段,必须明确表的名称。 示例: SELECT 订单明细.*, 产品名称 FROM 订单明细 INNER JOIN 产品 ON 订单明细.产品ID = 产品.产品ID ORDER BY 订单ID 上述语句生成的查询表,包括订单明细的所有列,以及该订单明细对应的产品名称(来源于产品表) INNER JOIN要求两个表必须都有对应的记录,才会在查询表中生成记录。你还可以用LEFT JOIN 或者 RIGHT JOIN,前者只要求左边的表有对应的记录即可,后者只要求右边的表有对应的记录即可。 数据不仅可以来自于两个表,还可以来自于更多的表,例如下面的语句: SELECT 订购日期, 订单明细.*, 产品名称 FROM (订单明细 INNER JOIN 产品 ON 订单明细.产品ID = 产品.产品ID) INNER JOIN 订单 ON 订单明细.订单ID = 订单.订单ID ORDER BY 订购日期 上面的查询表的列来自于三个表,其中订购日期来自于订单表,产品名称来自于产品表,其余来自订单明细表。 下面的查询,列来自于四个表: SELECT 订购日期,公司名称,产品名称, 数量, 订单明细.单价, 折扣, (数量 * 订单明细.单价 * (1-折扣)) AS 金额 FROM ((订单明细 INNER JOIN 产品 ON 订单明细.产品ID = 产品.产品ID) INNER JOIN 订单 ON 订单明细.订单ID = 订单.订单ID) INNER JOIN 客户 ON 订单.客户ID = 客户.客户ID 在上面的查询中,因为产品表和订单明细表都有单价列,所以字段列表中对于单价列的引用,要明确引用的是哪一个表的单价列,例如:订单明细.单价 此外,在有多个JOIN语句的情况下,靠前的JOIN语句要用圆括号括起来,如前面的例子所示。 |