Da diese Tabellen zur Verfügung gestellt:Suche alle Zeilen mit den gleichen genauen Beziehungen wie in einer anderen Tabelle
Tabelle: Test
Spalten:
- TestID int PK
- Name nvarchar (128) EINZIGARTIG NICHT NULL
Tabelle: [Test-Eingänge]
Spalten
- inputsTableName nvarchar (128) UNIQUE PK
- TestID int PK FK
temporäre Tabelle: ## TestSearchParams
Spalten:
- inputsTableName nvarchar (128) UNIQUE NOT NULL
Ich brauche Tests zu finden, die Einträge in Test-Eingänge mit inputsTableNames haben passende GENAU alle Einträge in ## TestSearchParams ; Die resultierenden Testbeziehungen müssen genau denen in ## TestSearchParams entsprechen.
Im Wesentlichen finde ich Tests mit NUR den gegebenen Beziehungen, nicht mehr und nicht weniger. Ich passe Namen mit LIKE und Wildcards, aber das ist eine Randbemerkung, die ich glaube, dass ich lösen kann, nachdem die Kernlogik für genaues Matching da ist.
Dies ist meine aktuelle Abfrage:
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
);
Das aktuelle Problem ist, dass seine Tests mit einem Spiel auf alle Einträge in ## TableSearchParams abgerufen werden scheint. Ich habe schon vorher verschiedene andere Abfragen ausprobiert, die unterschiedlich erfolgreich waren. Ich habe funktionierende Abfragen, um Tests zu finden, die mit irgendeinem der Parameter, allen Parametern und keinem der Parameter übereinstimmen - ich kann diese Abfrage einfach nicht funktionieren lassen.
Hier sind einige Beispiele für Tabellenwerte:
Tests
- 1, Test1
- 2, Test2
- 3, Test3
[Test-Eingänge]
- Tabelle 1, 1
- Table2, 2
- Tabelle 1, 3
- Tabelle 2, 3
TestSearchParams
- Tabelle1
- Table2
Die angegebenen Werte sind nur zurückkehren (3, Test3)
Bearbeiten Sie Ihre Frage und bieten Beispieldaten und gewünschte Ergebnisse. –
in Ordnung Beispiele sollten geschrieben werden – DeceitfulEcho
Hier ist ein großartiger Ort, um zu beginnen. http://spaghettiba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ –