我有一个表[选择],其中包含列Id,Id_purchase和Id_employee。 Id是主键,全部是int类型。
Id | Id_purchase | Id_employee
1 | 1 | 1
表[employees]有Id_employee(int),名称是varchar(250)
Id_employee | name
1 | name1
2 | name2
3 | name3
表[purchase]有Id_purchase(int),article是varchar(250)
Id_purchase | article
1 | book1 pattern ABC
2 | book2 autor hjk abc
3 | book3 about xyz
4 | book4 JJJJ
,表[key_search]有Id,查询是varchar(100)。
ID | query
1 | book*abc
2 | book*about
来自[员工]的每位员工如何创建记录以添加到表[选择]从表[购买]中的所有购买的ID,其中表[key_search]中提到了单词。 在表[key_search]中,“*”被认为是任意数量字符的替代品。对于样本,像“book * abc”这样的查询需要REPLACE到“%book%abc%”才能在所有购买中进行搜索。
答案 0 :(得分:1)
也许是这样的:
SELECT p.Id_purchase,
e.Id_employee
FROM employees e
CROSS JOIN purchase p
INNER JOIN key_search k
ON p.article LIKE '%' + REPLACE(k.[query],'*','%') + '%'
对于当前样本,结果如下:
| Id_purchase | Id_employee |
|-------------|-------------|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
| 3 | 1 |
| 3 | 2 |
| 3 | 3 |