Abfrage erstellen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

inajock
Beiträge: 1
Registriert: Sa, 15.08.2009 18:55

Abfrage erstellen

Beitrag von inajock »

Ahoi,

ich stelle hier für meinen Vater eine Frage, also bitte nicht lynchen, wenn ich nicht zuerst die Suche betätigt habe. Ich weiß schlicht und ergreifend nicht, wonach ich suchen müsste - habe mit Datenbanken nichts am Hut und mit OO auch nicht. Wäre nett, wenn ihr mir bzw. ihm trotzdem helfen könnten.

Also folgende Aufgabenstellung: Mein Vater will sich eine Tabelle aufbauen, in der er Cocktails samt deren entsprechende Zutaten listet. Dazu kommt eine zweite Tabelle, in der die Zutaten nochmals gelistet sind und mit einer Checkbox aktiviert werden, wenn sie vorrätig sind. Diese beiden Tabellen müssen nun miteinander verglichen werden um im Endeffekt eine Liste der möglichen Cocktails mit dem vorrätigen Material zu bekommen.

Das Problem: Mein Vater weiß zwar, wie man eine Abfrage einer einzelnen Datei macht, nicht aber von allen Zutaten. So zumindest hab ich das jetzt verstanden.

Also: Zwei Tabellen. Tabelle eins mit den Cocktails, unter anderem mit dem Feld "Zutaten". Tabelle zwei mit dem Feld "Vorhanden". Die Einträge im Feld "Vorhanden" werden via Checkbox aktiviert, wenn sie... vorhanden sind. Nun soll das Feld "Vorhanden" aus Tabelle zwei mit dem Feld "Zutaten" aus Tabelle eins verglichen werden und die entsprechenden Cocktails in seinem Formular gezeigt werden. Die Tabellen und Formulare hat er erstellt, nur wie die Abfrage erstellt wird, weiß er nicht, bzw. findet keine entsprechende Anleitung.

Hat das jemand verstanden? Weiß jemand, wo es die entsprechende Anleitung gibt oder kann Tipps geben?

Thx/inajock
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Abfrage erstellen

Beitrag von Barlee »

Hallo inajock,

du schreibst von einer Tabelle, "in der er Cocktails samt deren entsprechende Zutaten" gelistet werden. In welcher Form? Sind die Zutaten in separaten Zeilen aufgeführt, d.h.
[Spalte1] [Spalte2]
Cocktail A Zutat1
Cocktail A Zutat2
Cocktail A Zutat3
Cocktail B Zutat1
Cocktail B Zutat2
...

oder etwa in einer Zeile
[Spalte1] [Spalte2] [Spalte3] [Spalte4]
Cocktail A Zutat1 Zutat2 Zutat3
Cocktail B Zutat1 Zutat2

Sollte ersteres zutreffen, dann funktioniert es auf folgende Art:
Beispieltabellen "Tab_Cocktail" mit den Spalten "Cocktail", "Zutat" und "Tab_Zutat" mit den Spalten "Zutat", "vorhanden"
Die Bezeichnungen musst Du entsprechend anpassen

Code: Alles auswählen

SELECT DISTINCT "Tab_A"."Cocktail" 
FROM
(
SELECT "a"."Cocktail", "a"."Zutat", "b"."vorhanden"
FROM "Tab_Cocktail" "a", "Tab_Zutat" "b"
WHERE "a"."Zutat" = "b"."Zutat"
) "Tab_A",
(
SELECT "a"."Cocktail", COUNT("a"."Zutat") AS "Zutaten_notw"
FROM "Tab_Cocktail" "a"
GROUP BY "a"."Cocktail"
) "Tab_B",
(
SELECT "a"."Cocktail", COUNT("b"."vorhanden") AS "Zutaten_vorh"
FROM "Tab_Cocktail" "a", "Tab_Zutat" "b"
WHERE "a"."Zutat" = "b"."Zutat"
AND "b"."vorhanden" = TRUE
GROUP BY "Cocktail"
) "Tab_C"
WHERE "Tab_A"."Cocktail" = "Tab_B"."Cocktail"
AND "Tab_A"."Cocktail" = "Tab_C"."Cocktail"
AND "Tab_B"."Zutaten_notw" = "Tab_C"."Zutaten_vorh"
Ergebnis sind alle Cocktails, für die alle Zutaten vorhanden sind.

Gruß Barlee
Antworten