AND Abfrage innerhalb einer m:n Beziehung

CObject

Grünschnabel
Hallo zusammen ...

Es gibt Bilder und Schlüsselworte. Jedes Bild kann beliebig viele Schlüsselworte haben und jedes Schlüsselwort kann bei beliebig vielen Bildern verwendet werden. Diese m:n Beziehung habe ich in folgenden drei Tabellen untergebracht:

table: picture
fields: id

table: keyword
fields: id

table: pic_key
fields: pic_id, key_id

Nun gibt der Benutzer Schlüsselworte an und die DB soll alle picture.id liefern, die alle Schlüsselworte benutzt.

picture
---------
pic1
pic2
pic3

keyword
------------
keyA
keyB

pic_key
-----------
pic1 keyA
pic2 keyA
pic2 keyB
pic3 keyB

Wenn der Benutzer bei o.g. Einträgen also die Schlüsselworte keyA und keyB eingibt, erwarte ich, dass ich als picture.id die pic2 geliefert bekomme. Und nur diese.

Irgendwie habe ich da einen Knoten und weiß nicht so recht, wie die Abfrage aussehen muss. Über eine temporäre Tabelle oder eine interne Liste mit den picture.id habe ich auch schon nachgedacht. Ein zusätzliches Problem ist allerdings, dass ich auch ein Auge auf die Performance haben muss, da die DB für Massendaten (> 100.000 Bilder) ausgelegt ist. Mir fehlt schlicht eine Idee wie die Abfrage aussehen soll. Wenn da jemand einen Tipp hat, wäre ich sehr dankbar.
 
Zurück