Office中国论坛/Access中国论坛

标题: 求一个查询,附实例 [打印本页]

作者: isyuan    时间: 2013-2-4 11:22
标题: 求一个查询,附实例
本帖最后由 isyuan 于 2013-2-4 15:53 编辑

查询一:temp_1
  1. SELECT zyh AS 代码,zymc AS 名称 FROM DSPEC
  2. UNION (SELECT Lbh,Lbmc FROM NPROFF
  3. UNION SELECT Xdh,Xdmc FROM XD);
复制代码
查询二:temp_2,调用了已经存在的temp_1
  1. SELECT Difference.Zkzh AS 准考证号码, Difference.Code AS 报名号, Difference.Name AS 姓名, Difference.FieldName AS 列, IIf(IsNull([temp_1].[名称]),[before],[temp_1].[名称]) AS 以前, IIf(IsNull([temp_1_1].[名称]),[now],[temp_1_1].[名称]) AS 现在
  2. FROM (Difference LEFT JOIN temp_1 ON Difference.Before = temp_1.代码) LEFT JOIN temp_1 AS temp_1_1 ON Difference.[Now] = temp_1_1.代码
  3. ORDER BY Difference.Zkzh;
复制代码
求解:把二个查询合并,用一个查询实现。

附实例下载。谢谢!

该问题困扰我多天了。


作者: roych    时间: 2013-2-4 13:46
应该可以用别名来处理,类似于:
select  * from (select * from B) as A
创建查询跟执行查询是两码事,查询运行速度跟创建查询的多少并没有必然联系,而跟索引属性、语句可读性和查询条件等等有关系。能够一个查询完成的,固然没必要分成几个。但是,出于可读性和直观性,有时候确实不必非要寻求一步到位的查询。毕竟别名用多了,不方便检查和修改查询。——反正我宁可在窗格里修改查询也不愿去编辑N个别名的SQL语句。
作者: isyuan    时间: 2013-2-5 13:36
本帖最后由 isyuan 于 2013-2-16 10:10 编辑

算了,解决不了。





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3