【问题标题】:Lookup a value in a range查找范围内的值
【发布时间】:2016-11-22 10:57:11
【问题描述】:

这里是 SQL 新手。我正在尝试使用 between 函数从 AgeBrackets 表中根据列表中的年龄获取适当的年龄类别。

GetAgeCategory 查询:

SELECT TRANSACTIONS.ACCOUNT_NUM,  TRANSACTIONS.Age at List, Age Category.AgeBrackets 
FROM TRANSACTIONS, AgeBrackets
WHERE 
(((TRANSACTIONS.Age at List) Between [AgeBrackets].FROM and [AgeBrackets].TO)); 

我对 TRANSACTIONS 表进行了计数,与 GetAgeCategory 查询相比,该表上的记录更多。由于某种原因,查询从 TRANSACTIONS 表中排除了记录。我做错了什么?

【问题讨论】:

  • 哪个 RDBMS 使用..?
  • 这是什么语法? MS Access SQL 看起来并不像这样。
  • 我使用的是 MS Access,有一个错字。选择部分应该是:SELECT TRANSACTIONS.ACCOUNT_NUM, TRANSACTIONS.[Age at List], Age Category.[AgeBrackets]

标签: sql ms-access subquery lookup


【解决方案1】:

您的 Select Query 语法不是 MS access 的 sql 语法,并且您对 Age 的界定不正确。

尝试将 AgeBrackets 分成两个字段,一个包含下边界,一个包含上边界,然后使用以下 SQL:

SELECT TRANSACTIONS.ACCOUNT_NUM,  TRANSACTIONS.Age at List, Age Category.AgeBracketsLower, Age Category.AgeBracketsUpper 
FROM TRANSACTIONS, AgeBrackets
WHERE 
(((TRANSACTIONS.Age at List) Between [AgeBracketsLower] TO [AgeBracketsUpper])); 

在使用 between 时,您必须建立清晰的上下边界。不应将一个字段用于两个边界,因为访问不会区分差异。
正确:
1到5之间
2000 年至 2016 年之间
在 number1 和 number2 之间
您的声明: [AgeBrackets] TO [AgeBrackets] 粗略地转述为Between 1 to 1

【讨论】:

  • 太好了,请将此标记为正确答案,我们完成了,祝您有美好的一天。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多