【发布时间】:2021-10-10 18:26:49
【问题描述】:
我有一个系统,用户可以在填写应用程序时从不同字段中选择多个值。这些多值字段的所有各种值都包含在一个表中,通过应用程序 ID 链接到用户的输入应用程序。 (我不会这样设计它,但我继承了数据库)。我正在尝试编写一个 select 语句,根据表 1 中的唯一行查询表 2 中的多行。
所以,表格看起来像这样:
应用表(表1)
| Application_ID | Applicant_Name | Application_Title | Application_Date |
|---|---|---|---|
| 1073 | John Smith | John's Application | 07/15/2021 |
| 2104 | Belinda Jones | Belinda Applies | 07/29/2021 |
选择表(Table2)
| Application_ID | Name | Value | Sort_Order |
|---|---|---|---|
| 1073 | State | Texas | 2 |
| 1073 | State | Ohio | 1 |
| 1073 | Color | Red | 2 |
| 1073 | Color | Blue | 1 |
| 1073 | Color | Orange | 2 |
| 2104 | Color | Green | 1 |
| 2104 | Color | Purple | 2 |
| 2104 | State | Delaware | 1 |
我之前使用左连接从选择表中的一个多值字段中提取值:
选择 Left(Selection,Value,100) 作为“状态”
以及稍后在 where 原因中,使用以下方法定义哪一行:
其中 Selection.Name = '状态' 和 Selection.Sort_order = 1
但我无法找出编写选择语句的最佳方法,该语句从每个应用程序 ID 的选择表中提取所有值。我需要将所有多值字段(表 2 中的名称)中的值与一个应用程序 ID 关联。
【问题讨论】:
-
你的输出是什么?
-
您使用的是什么平台?您可以将答案分组到一个逗号分隔的列表中,但是在不同的数据库上您的做法是不同的
-
我也不认为这是您实际使用的代码,因为
Left(Selection,Value,100)是语法错误 -
我正在使用 SSMS。
-
我以前从未遇到过使用 Left(table,Value,length) 语法的任何问题,只要我在 Where 子句中确定了我要查找的值。