Suchen Sie Datensätze mit genauen Übereinstimmungen in einer Viele-zu-Viele-Beziehung

8

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 .

hat

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.

    
systempuntoout 14.06.2011, 07:32
quelle

3 Antworten

2

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%     
Lieven Keersmaekers 14.06.2011, 08:03
quelle
0

Eine Möglichkeit, dies zu tun, wäre etwa Folgendes:

%Vor%     
cusimar9 14.06.2011 07:51
quelle
0
%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.

    
ypercubeᵀᴹ 14.06.2011 07:51
quelle

Tags und Links