Kann es passieren, dass ein Produkt mehrere Interfaces mit der gleichen
IID hat?

Claudius

> 
> 
> 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
> 


| [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