Hallo Leute,
nach einiger Zeit habe ich wieder mit SQL zu tun und habe prompt einen kleinen Knoten 
im Hirn. Es gibt 3 Tabellen:

1) Produkte ( PID, Name, ... )
2) Interfaces ( IID, Name, ... )
3) Produkte_Interfaces ( PID, IID )

- Jedes Produkt kann also 0 bis n Interfaces besitzen.
- Es sollen Produkte gefunden werden, die bestimmte Interfaces besitzen. Die Eingabe 
ist also 0 bis n IIDs (wobei 0 nicht wirklich einen Sinn macht). Produkte, die nicht 
alle der angegebenen
IIDs besitzen, d�rfen dabei nicht getroffen werden.

folgende beispielhafte (ich suche mal nach IID "1" und "3") Abfrage ist also falsch, 
da sie alle findet, auch die, die nur eine Teilmenge besitzen (also z.B. IID "1" aber 
nicht IID "3"):

SELECT PID, Name
FROM Produkte
WHERE PID IN
 (   SELECT PID
     FROM Produkte_Interfaces
     WHERE IID=1 OR IID=3  )

Dann gab es noch folgende glorreiche Idee:

SELECT PID, Name
FROM Produkte
WHERE PID IN
( SELECT PID
  FROM Produkte_Interfaces
  WHERE IID = 1 OR IID = 3
  GROUP BY PID
  HAVING COUNT( IID ) = 2 )

Es wird im Subselect also eine Gruppe nach der PID gebildet und nur die Gruppen 
selektiert, in denen 1) die IIDs teilweise oder komplett vorkommen und 2) gleichzeitig 
die Anzahl entsprechend
ist. Auf den ersten Blick schien das Ergebnis korrekt, bin aber nicht sicher, ob das 
so ganz clean ist. �chz.

Ich bin f�r alle IDeen oder L�sungsans�tze hoch dankbar...

Gruesse
Matthias

| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp

Antwort per Email an