Hi,
ich habe eine normalisierte Datenbank, wo ich in einer übergeordneten Tabelle verschiedene Produkte habe und in einer untergeordneten Tabelle Eigenschaften, wobei jede Eigenschaft über einen Foreign Key mit dem Produkt in der übergeordneten Tabelle verbunden ist, wenn diese zutrifft. Das heißt, dass ein und dieselbe characteristic_id (= Foreign Key) in der untergeordneten Tabelle mehrfach vorkommen kann, wenn mehrere Eigenschaften auf ein Produkt zutreffen, z.B.
Übergeordnete Haupttabelle (product_main_table):
product_id product_name
23 Apple
24 Orange
25 Strawberry
Untergeordnete Tabelle (product_characteristics):
characteristic_id product_name characteristic
23 Apple green
23 Apple sweet
23 Apple small
23 Apple american
24 Orange orange
24 Orange sourly
24 Orange big
24 Orange african
25 Strawberry red
25 Strawberry sweet
Ich habe nun ein HTML-Formular zum Auslesen der Daten, wobei es auch die Möglichkeit geben soll, alle Produkte zu suchen, die gewisse Eigenschaften NICHT haben.
Allerdings funktioniert das nicht so wie es soll, weil wenn ich folgende Abfrage eingebe:
SELECT DISTINCT main.product_name FROM product_main_table main, product_characteristics prodchar WHERE prodchar.characteristic != 'sweet'
wird apple, orange und strawberry ausgegeben, obwohl nur orange alleine richtig wäre. Die anderen beiden Produkte werden natürlich ausgewählt, weil sie auch andere Eigenschaften als 'sweet' haben, die dann selektioniert werden.
Wie muss ich mein SELECT-Statement nun gestalten, damit ein Produkt nicht ausgewählt wird, wenn es auch nur eine einzige Eigenschaft hat, die nicht vorhanden sein soll?
Vielen Dank für Eure Hilfe!
ich habe eine normalisierte Datenbank, wo ich in einer übergeordneten Tabelle verschiedene Produkte habe und in einer untergeordneten Tabelle Eigenschaften, wobei jede Eigenschaft über einen Foreign Key mit dem Produkt in der übergeordneten Tabelle verbunden ist, wenn diese zutrifft. Das heißt, dass ein und dieselbe characteristic_id (= Foreign Key) in der untergeordneten Tabelle mehrfach vorkommen kann, wenn mehrere Eigenschaften auf ein Produkt zutreffen, z.B.
Übergeordnete Haupttabelle (product_main_table):
product_id product_name
23 Apple
24 Orange
25 Strawberry
Untergeordnete Tabelle (product_characteristics):
characteristic_id product_name characteristic
23 Apple green
23 Apple sweet
23 Apple small
23 Apple american
24 Orange orange
24 Orange sourly
24 Orange big
24 Orange african
25 Strawberry red
25 Strawberry sweet
Ich habe nun ein HTML-Formular zum Auslesen der Daten, wobei es auch die Möglichkeit geben soll, alle Produkte zu suchen, die gewisse Eigenschaften NICHT haben.
Allerdings funktioniert das nicht so wie es soll, weil wenn ich folgende Abfrage eingebe:
SELECT DISTINCT main.product_name FROM product_main_table main, product_characteristics prodchar WHERE prodchar.characteristic != 'sweet'
wird apple, orange und strawberry ausgegeben, obwohl nur orange alleine richtig wäre. Die anderen beiden Produkte werden natürlich ausgewählt, weil sie auch andere Eigenschaften als 'sweet' haben, die dann selektioniert werden.
Wie muss ich mein SELECT-Statement nun gestalten, damit ein Produkt nicht ausgewählt wird, wenn es auch nur eine einzige Eigenschaft hat, die nicht vorhanden sein soll?
Vielen Dank für Eure Hilfe!
Kommentar