【问题标题】:Query Assistance with Selection查询辅助选择
【发布时间】:2018-01-31 20:07:50
【问题描述】:

我仍在从事数据库项目,并且在尝试做某事(可能不是高级)时遇到了障碍,但我很难过!我有两张我试图加入的表,ADLs 和 TENANTS。在 TENANTS 中,我需要其中的以下数据:TenantID (PK)(auto-num)、TenantDateOfBirth (date)。

来自我需要的 ADL:ADLID (PK)(auto-num)、TenantID (FK) ADLDate (date)、Eating(文本选择仅限于独立或有困难)、洗澡(独立或有困难) ,美容(独立或有困难),穿衣(独立或有困难)和转移(独立或有困难)。

我需要的是 4 个单独的查询。

  1. 查询所有 18-61 岁的租户。 - 非老年人

  2. 查询所有 4 个字段均为“独立”的 62 岁以上的租户。 - *好老人

  3. 查询所有 62 岁以上且有 1-2 个字段为“有困难”的租户。 - 处于危险中的长者

  4. 将所有 62 岁以上且拥有 3 个以上字段的租户查询为“有困难”。 - 体弱的长者

【问题讨论】:

  • ADL 中的哪些字段以 TenantID 作为外键?看起来表是一对一的关系,那么为什么有两个表而不是一个呢?
  • 我在 ADL 表中将 TenantID 作为 FK。
  • 构建在 PK/FK 字段上连接的查询。仍然想知道为什么你有两张桌子。
  • How to ask a good SQL question。示例数据和预期结果比文字描述更有用。
  • 对不起,我的桌子上没有更清楚。每个租户可以有多个基于不同时间日期的 ADL 能力记录。有点像多个考试日期,每次考试的难度范围不同。这就是为什么我认为构建两个单独的表更有意义。

标签: sql ms-access


【解决方案1】:

在 PK/FK 字段上加入表格并计算一些字段。

使用DateDiff("yyyy",TenantDateOfBirth,Date()) 计算年龄。计算将四舍五入到全年。对于年份的一小部分,请尝试DateDiff("m", TenantDateOfBirth, Date()) / 12,它会四舍五入到月份。或者考虑一个UDF。有很多例子——首先是calculating age in years and months in Microsoft Access (2010)http://www.blueclaw-db.com/vb_age_calculation.htm

或者来自 shawnt00 评论的建议可能令人满意:
DateDiff("year", TenantDateOfBirth, Date()) - IIf(DatePart("y", Date()) < DatePart("y", TenantDateOfBirth), 1, 0)

计算难度系数:

IIf(Eating="Has Difficulty",1,0) + IIf(Bathing="Has Difficulty",1,0) + IIf(Grooming="Has Difficulty",1,0) + IIf(Dressing="Has Difficulty",1,0) + IIf(Transferring="Has Difficulty",1,0) AS DiffLevel

对计算字段 <62>61 以及 =0<3>2 应用过滤条件 - 以任何合适的组合。

【讨论】:

  • 我不会称之为“四舍五入”。你可以分开一天,但仍然在不同的年份。这会让你变老吗?我没有访问权限来试用它,但我真的认为您不一定需要复杂的功能:datediff("year", <dob>, <today>) - iif(datepart("y", <today>) < datepart("y", <dob>), 1, 0)
  • 更正以正确处理闰年:datediff("yyyy", <dob>, <today>) - iif(datepart("y", <today>) < datepart("y", <dob>) and datepart("y", dateadd("d", 306, <today>)) < datepart("y", dateadd("d", 306, <dob>)), 1, 0)
  • 但它计算其他生日错误。我的 b/d 是 12 月,计算我的年龄包括 2018 年。它“四舍五入”到全年。
  • 我的表达方式不对。我会试着坐在电脑前整理一下。至于一般年龄,datediff()` 不起作用。
  • 有趣。我很想知道如何正确格式化它。感谢大家的帮助!非常感谢有机会在这里学习!
猜你喜欢
  • 2011-04-04
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多