Hilfebei SQL Abfrage
Seismic
- datenbank
Hallo,
ich bräuchte eine Abfrage die mir alle "rezeptid"'s liefert, die nicht die "eigenschaftsid" 39 haben. Die Datem kommen aus einer View, deshalb gibts keinen Primärschlüssel. Steh da irgendwie etwas auf dem Schlauch..
rezeptid, titel, eigenschaftsid, bezeichnung
1, 'Chili con Carne', 64, 'Fleisch, Schinken, Lachs'
1, 'Chili con Carne', 39, 'Rindfleisch'
1, 'Chili con Carne', , ''
2, 'mein titel', , ''
4, 'Kartoffelsalat', , ''
4, 'Kartoffelsalat', 64, 'Fleisch, Schinken, Lachs'
4, 'Kartoffelsalat', 39, 'Rindfleisch'
5, 'Spargecremesoup á la provence ', 50, 'Glutamat'
5, 'Spargecremesoup á la provence ', 28, 'Gluten'
5, 'Spargecremesoup á la provence ', 72, 'Suppen & Fertiggerichte'
5, 'Spargecremesoup á la provence ', 51, 'Aromen'
5, 'Spargecremesoup á la provence ', 53, 'Farbstoffe'
5, 'Spargecremesoup á la provence ', 61, 'Gewürze, Salz, Essig, Öl'
Hi,
ich bräuchte eine Abfrage die mir alle "rezeptid"'s liefert, die nicht die "eigenschaftsid" 39 haben. Die Datem kommen aus einer View, deshalb gibts keinen Primärschlüssel. Steh da irgendwie etwas auf dem Schlauch..
rezeptid, titel, eigenschaftsid, bezeichnung
1, 'Chili con Carne', 64, 'Fleisch, Schinken, Lachs'
1, 'Chili con Carne', 39, 'Rindfleisch'
1, 'Chili con Carne', , ''
2, 'mein titel', , ''
4, 'Kartoffelsalat', , ''
4, 'Kartoffelsalat', 64, 'Fleisch, Schinken, Lachs'
4, 'Kartoffelsalat', 39, 'Rindfleisch'
5, 'Spargecremesoup á la provence ', 50, 'Glutamat'
5, 'Spargecremesoup á la provence ', 28, 'Gluten'
5, 'Spargecremesoup á la provence ', 72, 'Suppen & Fertiggerichte'
5, 'Spargecremesoup á la provence ', 51, 'Aromen'
5, 'Spargecremesoup á la provence ', 53, 'Farbstoffe'
5, 'Spargecremesoup á la provence ', 61, 'Gewürze, Salz, Essig, Öl'
Ich interpretiere deine Frage so:
Gib mir alle Rezepte, welche nicht die Zutat 39 (Rindfleisch?) haben.
Dies wäre etwa so möglich:
SELECT rezeptid -- gib mir alle rezeptid
FROM deinview -- aus meiner view
WHERE -- welche
NOT EXISTS -- nicht die Zutat
(SELECT * -- gib mir alle Zutaten
FROM deinview AS dv -- aus meiner view
WHERE dv.rezeptid = deinview.rezeptid -- die zu meinem Rezept gehören
AND dv.eigenschaftsid = 39 -- und Rindfleisch beinhalten
)
Das ist deswegen nicht leicht zu lesen, da deine View die normalisierte Struktur, aus welcher du bereits einfach alles auslesen könntest, bereits verdeckt.
Ich nehme an, dass es eine Relation "rezept" und eine Relation "zutat" gibt, welche über den Primärschlüssel "rezeptid" miteinander verknüpft sind (in einer 1:n Beziehung).
Dann wäre das soetwas wie
SELECT rezeptid -- gib mir alle rezeptid
FROM rezept -- aus der Menge aller Rezepte
WHERE -- bei welchen
NOT EXISTS -- keine Zutat existiert
(SELECT * --
FROM zutat --
WHERE zutat.rezeptid = rezept.rezeptid -- die zu meinem Rezept gehört
AND zutat.eigenschaftsid = 39 -- und Rindfleisch beinhaltet
)
Bis die Tage,
Matti
Hallo Matti,
vielen Dank für die schnelle und ausführliche Antwort. Du hast Recht, es gibt über eine Rezept-Produkt-Eigenschaft diese Zuordnung auch in der Tabellenstruktur. So brauch ich die Abfrage auch nicht mehr als View realisieren.
Ich wünsche dir ein schönes Wochenende!
Dirk