SQL-Abfrage zum Filtern einer Tabelle mit einer anderen Tabelle
Momentan habe ich 2 SQL-Tabellen, die wie folgt Aussehen:
...
Schreiben brauche ich eine SELECT-Anweisung, ruft Sie alle Produkte aus der Datentabelle, die Zeilen enthalten, die mit der FilterTable.
Also, basierend auf meinem Beispiel Tabellen oben, wenn ich die Abfrage ausführen, es würde das folgende Ergebnis zurück:
Vor kurzem fand ich eine Frage, die Art der versuche:
SQL-Abfrage, wo ALLE Datensätze im join-match-Bedingung?
aber waren erfolglos bei der Umsetzung etwas ähnliches
Hinweis - ich bin mit Microsoft SQL Server 2008
InformationsquelleAutor StevenP | 2013-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein wenig kompliziert, aber hier ist eine Lösung. Im Grunde müssen Sie prüfen, um zu sehen, wie viele Datensätze aus der Datentabelle entsprechen, alle Datensätze aus der filtertable. Dieser verwendet eine Unterabfrage zu tun:
Ich bin mal gespannt. Wie ist es möglich, dass "HAVING COUNT() = (SELECT COUNT() AUS FilterTable)" angeben, und wählen Sie Wert 1 und 4? Count zum zählen andere Zeile in der Tabelle.
InformationsquelleAutor sgeddes
Dies funktionieren wird:
Habe ich ein SQL Fiddle, wenn Sie versuchen wollen, andere Dinge:
http://sqlfiddle.com/#!3/38b87/6
EDIT:
Bessere Antwort:
Diese passt jetzt, wo es mindestens einen filter, der passt, und keine, die nicht.
Dies wird jedoch zurück-IDs, wobei die ID nicht in einem Feld, die den Filterkriterien entsprechen. (Also, wenn Sie haben ein neues Feld, sagen Sie "Active2", und filter auf, dass alle IDs, die oben gezeigt wird, zurückgegeben werden. Das ist, weil wir speziell auf der Suche nach Instanzen, wo der filter passt nicht.)
Netter Versuch, aber das funktioniert nicht immer -- nehmen Sie dieses Beispiel: sqlfiddle.com/#!3/71703/1 -- mit dieser sagte, ich Frage mich, ob Sie nicht auf etwas einfacher...
NÖ. Das sieht für alle IDs wo der Filter nicht entsprechen, und dann filtert diese aus. Sicherlich, es gibt die Ergebnisse zurück, die OP war auf der Suche für. Leider, es gibt auch keine, wo keiner der Filter existieren gegen diese ID. Nicht sicher, ob das, was der OP wollte.
ja, ich habe das Spiel mit ihm für ein paar Minuten. Nicht sicher, wie Sie Sie zu bekommen, um mit
COUNT
. So oder so, +1 für die Mühe 😀InformationsquelleAutor Hotchips
Im Fall können Sie verwenden von sp_executesql (Sie sind mit Verfahren).
InformationsquelleAutor gotqn
Hier ist eine option, mit ein paar Zapfen
Durch eine PIVOTTABELLE auf die Datentabelle und dann auf die FILTER-Tabelle, die es Ihnen ermöglicht, aufgereiht für eine innere Verknüpfung. Diese Datensätze zurück, die eine übereinstimmung innerhalb der beiden,
InformationsquelleAutor Steven