SQL-Ergebnisse ausschließen, wenn eine Bedingung erfüllt ist?
Ich habe die folgende Tabelle: compare
. Ich muss eine innere Verknüpfung mit einem products
Tabelle:
idCompare idProduct dateStamp
1 1 2011-12-12
2 1 2011-12-10
3 1 2012-01-05
Ausschließen will ich die idproduct von meinen Ergebnissen, wenn einer von Ihnen einen Termin innerhalb von sagen wir 7 Tagen.
Ich habe versucht, mit den NICHT IN und NICHT EXISTIERT, ohne Erfolg
SELECT products.idProduct
FROM products INNER JOIN
compare ON products.idProduct = compare.idProduct
WHERE
(products.idProduct = '1') AND (products.idProduct
NOT IN
(SELECT idProduct
FROM compare
WHERE (products.idProduct = compare.idProduct) AND
(dateStamp < DATEADD(DAY, - 7, GETDATE()))))
- Wählen Sie
products.idProduct
, obwohl Sie definieren es als1
. Ist dies gewollt? - Ich war einfach nur testen, diese 1-Beispiel, schließlich werde ich entfernen (- Produkte.idProduct = '1')
- Nicht Sie müssen sich
ON products.idProduct = compare.idProduct
? Auch Sie wollen>
oder>=
statt<
in der letzten Zeile, nicht wahr? - Und braucht man eigentlich die Informationen in
compare
oder sind Sie nur versuchen, um auszuschließen dasproduct
wenn der Vergleich Zeile vorhanden ist? - Ja das ist ein Tippfehler, ich hatte mich geändert, die Namen der Tabellen etc aus, was ich hier benutze. Aktualisiert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte wie folgt Aussehen:
Nicht
JOIN
auf den Tischcompare
zusätzlich. Überprüfung mitNOT EXISTS
ist genug, nach Ihrer Beschreibung.Versuchen, diese für Ihre
not exists
: