鉴于这些表:查找具有相同的确切关系,所有的行,另一个表中提供
表:测试
列:
- testID INT PK
- 名称为nvarchar (128)UNIQUE NOT NULL
表:[试验输入]
列
- inputsTableName为nvarchar(128)PK UNIQUE
- testID INT PK FK
临时表:## TestSearchParams
列:
- inputsTableName为nvarchar(128)UNIQUE NOT NULL
我需要找到一个在试验输入项测试与精确匹配的所有条目在## TestSearchParams inputsTableNames ;得到的测试关系必须与## TestSearchParams中列出的完全一样。
本质上,我只用给定的关系找到测试,不多也不少。我使用LIKE和通配符匹配名称,但是这是一个我认为可以在核心逻辑完成匹配后解决的旁注。
这是我当前的查询:
Select *
From Tests As B
Where B.testID In (
Select ti
From (
Select (
Select Count(inputsTableName)
From [Test-Inputs]
Where [Test-Inputs].testID = B.testID
) - Count(Distinct i1) As delta,
ti
From (
Select [Test-Inputs].inputsTableName As i1,
[Test-Inputs].testID As ti
From ##TableSearchParams
Join [Test-Inputs]
On [Test-Inputs].inputsTableName Like ##TableSearchParams.inputsTableName
And B.testID = [Test-Inputs].testID
) As A
Group By ti
) As D
Where D.delta = 0
);
目前的问题是,他似乎与匹配任何条目的## TableSearchParams检索测试。在此之前,我尝试了其他几个查询,以获得不同程度的成功。我有查找测试匹配任何参数,所有的参数,并没有任何参数工作查询 - 我只是不能让这个查询工作。
下面是一些示例表值:
测试
- 1,测试1
- 2,的Test2
- 3,Test3的
[试验输入]
- 表1,1
- 表2,2
- 表1,3
- 表2,3个
TestSearchParams
- 表1
- 表2
个
给定的值应该只返回(3,Test3的)
编辑您的问题,并提供样本数据和所需的结果。 –
好的例子应该发布 – DeceitfulEcho
这里是一个很好的开始。 http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –