SQL-Abfrage: Einträge, die auf alle zutreffen
am 05.05.2006 07:54:12 von Andreas MuschkatIch weiß nicht, wie ich für folgendes Problem eine SQL-Abfrage
zusammenstellen muß:
Tabelle Gegenstaende (geg):
id: ID des Datensatzes
name: Name des Gegenstands , z.B. Ball, Stuhl, Tisch
preis: Preis des Gegenstands (integer)
Tabelle Eigenschaften (eig):
id: ID des Datensatzes
name: Name der Eigenschaft, z.B. rot, gruen, rund, leicht...
Tabelle Eigenschaften-Gegenstaende-Verknüpfung (geg_eig_verkn):
geg_id: ID des Gegenstandes
eig_id: ID der Eigenschaft
In dieser Tabelle ist pro Verknüpfung einer Eigenschaft mit einem
Gegenstand ein Eintrag.
Nun will ich alle Gegenstände habe, deren Eigenschaft "rund" ist (ID
ist hier z.B. 1)
Dazu dann folgender SQL-String:
SELECT gv.geg FROM geg_eig_verkn gv WHERE gv.eig_id=1
Das war noch einfach. Nun will ich alle haben, die rund oder leicht
sind (ID für leicht = 2).
SELECT gv.geg FROM geg_eig_verkn gv WHERE gv.eig_id=1 OR gv.eig_id=2
Nun aber die Fragen: Wie bekomme ich eine UND-Verknüpfung hin? Ich
will also alle Gegenstände haben, die rund UND leicht sind.
SELECT gv.geg FROM geg_eig_verkn gv WHERE gv.eig_id=1 AND gv.eig_id=2
geht natürlich nicht, weil eig_id schlecht 1 und gleichzeitig 2 sein
kann...
Mein endgültiges Ziel, also die eigentliche SQL-Frage, die ich suche,
ist: Ich will alle runden und leichten Gegenstände, die weniger als 10
EUR gekostet haben.
Die einfache Variante (alle runden Gegenstände, die weniger als 10 EUR
kosten) geht so:
SELECT g.id FROM geg g,geg_eig_verkn gv WHERE g.preis<10 AND
gv.eig_id=1 AND gv.geg_id=g.id
Wie bekomme ich hier die Abfrage mit "rund" und "leicht" hin?
Viele Grüße,
Andreas