Ich habe drei Tabellen, die wie folgt aussehen:
PROD
%Vor%RAM
%Vor%PROD_RAM
%Vor%Zwischen PROD und RAM gibt es eine Viele-zu-Viele-Beziehung, die in der Tabelle PROD_RAM beschrieben wird.
Gegeben ein Ram_ID
set wie (R1,R3)
Ich würde gerne alle PROD
finden, die genau ONE oder ALL von RAM
von gegeben gesetzt.
Gegebene (R1,R3)
sollte zum Beispiel P1
, P4
und P5
; P3
sollte nicht zurückgegeben werden, weil R1
und R3
, aber auch R2
.
Was ist die schnellste Abfrage, um alle PROD
zu erhalten, die genau ONE oder ALL von Ram_ID
einer gegebenen RAM
gesetzt haben?
BEARBEITEN:
Die Tabelle PROD_RAM
könnte eine Beziehung enthalten, die größer als 1 & gt; 3 ist, so dass "fest codierte" Überprüfungen für die Anzahl = 1 ODER = 2 keine brauchbare Lösung sind.
Eine andere Lösung, die Sie für Geschwindigkeit versuchen könnten, wäre wie folgt
%Vor%oder wenn Sie die festgelegten Bedingungen nicht wiederholen möchten
%Vor% Ganz sicher nicht, ob es der schnellste Weg ist. Sie müssen verschiedene Möglichkeiten ausprobieren, um diese Abfrage zu schreiben (mit JOIN
s und NOT EXISTS
) und auf Geschwindigkeit testen.
Tags und Links sql sql-server sql-server-2008