sql - 获取变量中字符串值的相关数据
问题描述
我有变量@Projects
,其中包含名称的字符串数据,例如'Project1;Project2;Project3'
我通过查询得到这个结果:
SELECT
@Projects = (SELECT Project_Title+';'
FROM Table20
FOR XML PATH(''))
我需要获取变量中项目的相关项目的名称,方法是将这些项目中的 与它进行比较,以便再次与它进行比较。ID
Table 1
Table 2.ID
Table 2.RelatedProject_ID
Table 1
Table_1 Table_2
Project | ID | | ID | RelatedProject_ID |
---------+-----+ +-----+---------------------+
Project1 | 001 | | 001 | 015 |
Project2 | 002 | | 002 | 020 |
Project3 | 003 | | 003 | 031 |
Project4 | 004 | | 004 | 032 |
Project5 | 005 | | 005 | 017 |
在这种情况下,获取相关项目名称的正确方法是什么?
解决方案
加入table_1
以table20
获取项目的 ID。然后加入table_2
获取相关项目的ID。最后再次jointable_1
得到相关项目的名称。
SELECT @RelatedProjects = (SELECT t1b.project + ';'
FROM table20 t20
LEFT JOIN table_1 t1a
ON t1a.project = t20.project_title
LEFT JOIN table_2 t2
ON t2.id = t1a.id
LEFT JOIN table_1 t1b
ON t1b.id = t2.related_project
FOR XML PATH(''));
(只有在table_1.project
唯一的情况下才可靠。考虑table20
用他们的 ID 而不是他们的名字来存储项目。)
推荐阅读
- javascript - How to transform a piece of text into a link?
- .net - 带有.NET 下拉菜单的按钮?
- http - 我的请求的 HTTP 状态
- python - 如何使用 QSQL 从 PYQT5 Python 中的 Sqlite3 数据库中获取 QCombo BOX 中的记录列表
- javascript - 如何在点击时在 div 之间淡入淡出,从不显示开始?
- python - 在 Weka 中执行 CTNK 算法。再现性问题
- regex - Python glob.glob 与可选子目录一起使用?
- azure - 用于获取与证书链接的所有应用程序服务的 Powershell 脚本
- java - Java:访问字符串数组时的 ArrayIndexOutOfBounds
- typescript - VSCode 无法安装 TSLint 扩展