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