写查询语句把Aceess写崩掉了,大家讨论下
视图dataview
SELECT 测试结果.结果ID, (select 姓名 from 个人信息 where 个人编号=测试结果.个人编号) AS 姓名, 测试结果.个人编号 AS 心测号, (select 出生日期 from 个人信息 where 个人编号=测试结果.个人编号) AS 出生日期,(select 性别 from 个人信息 where 个人编号=测试结果.个人编号) AS 性别, =DateDiff( "m ",(select 出生日期 from 个人信息 where 个人编号=测试结果.个人编号), 测试结果.测查日期)/12 AS 年龄, (select 婚姻 from 婚姻类型信息 where 婚姻ID=测试结果.婚姻ID) AS 婚姻, (select 文化 from 文化类型信息 where 文化ID=测试结果.文化ID) AS 文化, (select 职业 from 职业类型信息 where 职业ID=测试结果.职业ID) AS 职业, (select 被试来源 from 被试来源类型信息 where 被试来源ID=测试结果.被试来源ID) AS 被试来源, (select 主测人姓名 from 主测人信息 where 主测人ID=测试结果.主测人编号) AS 主测人, 测试结果.测查日期, 测试结果.测查用时 AS 完成时间, (select 住院号 from 个人信息 where 个人编号=测试结果.个人编号) AS 病历号, (select 诊断名 from 诊断类型信息 where 诊断ID=测试结果.诊断ID) AS 诊断, 测试结果.病区, 测试结果.病程, (select 病情 from 病情类型信息 where 病情ID=测试结果.病情ID) AS 病情, 测试结果.量表ID, (select 量表中文名 from 量表信息 where 量表ID=测试结果.量表ID) AS 量表中文名, 测试结果.结果
FROM 测试结果;
对视图进行条件查询
select * from DataView where 量表ID=66 and 性别= '男 '
查询出的结果
出生日期 性别
1979-5-30 女
1979-5-30 女
2007-2-25 女
1981-12-1 女
2007-1-29 女
居然把原数据为男的,全用女显出来
------解决方案--------------------1、你的查询要优化一下,用N个INNER JOIN即可,你的查询大量用子查询,影响效率;
2、在ACCESS中,如查询过于复杂、IIF用得过多,会出现问题,可拆分为数个查询,再
连接。
------解决方案--------------------不建议把查询做得这么复杂,一个是效率低,另外就是维护起来比较困难。
建议通过把中间的数据存放到表中,在中间表数据的基础上再做查询。
------解决方案--------------------属性 最大值
实施关系的个数 每个表为 32 减去表中不包含在关系中的字段或字段组合的索引个数
查询中的表的个数 32
记录集中的字段个数 255
记录集大小 1G 字节
排序限制 255 个字符(一个或一个以上字段)
嵌套查询的层次数 50
查询设计网格一个单元格中的字符个数 1,024
参数查询的参数字符个数 255
WHERE 或 HAVING 子句中 AND 的个数 99
SQL 语句中的字符个数 约为 64,000