Access

Hallo,
ich habe ein Problem bei der Filterung einer Abfrage für eine Rezeptdatenbank.

Die (Beispiel-)Datenbank hat drei Tabellen:

tblRezepte (ID_Rezepte, Titel)
tblZutaten (ID_Zutaten, Zutat)
tblRezepteZuZutaten(ID_RZZ, ID_Rezepte_F, ID_Zutaten_F)

Die ID…_F sind jeweils der Fremdschlüssel zu der jeweiligen ID…

Die Aufgabe ist nun alle Rezepte zu listen, die eine Zutat mit LIKE „*Suchwort*“ enthalten.

Wenn ich aber tblZutaten.Zutat in die Abfrage mit aufnehme, dann bekomme ich (logischerweise) jedes Rezept x-Mal in der Abfrage (für jede Zutat einmal).
Wie umgehe ich das?

Gruß,
Kevin

Du musst über „Rezepte“ in der Abfrage gruppieren, so tritt jedes gefundene Rezept nur einmal auf.

Tut mir leid, ich kann Deine Frage leider nicht beantworten.

Gruss

Hallo,
ich verstehe dein Problem nicht wirklich. Wenn ich auf einen bestimmten Suchtext filtere (also z.B. like „*eier*“ dann bekäme ich ja nur dann das Rezept mehrmals aufgelistet, wenn es mehr als eine Zutat gäbe die „*eier*“ enthält. Dies ließe sich aber wie folgt verhindern: In der Entwurfsansicht der Abfrage auf das Icon Abrageeigenschaften klicken und dort neben ‚keine Duplikate‘ ja auswählen. Weiters muss du nun nur noch das Feld tblRezepte.Titel ausblenden (Anzeigehäkchen entfernen). Sollte dir meine Erklärung nicht genügen, so kann ich ja eine Beispieldatenbank basteln und dir senden.

lG
Robert

Hallo,

probier mal das DISTINCT oder DISTINCTROW Schlüsselwort aus (erklärt in der Online-Hilfe zu Access), dann erhältst Du nur eindeutige Datensätze zurück.

Gruß

Stefan

Hallo Kevin,

das Ganz kann man nur mit einer Pivottabelle umgehen, die würde dann die
Verlinkungen der Zutaten zu einem Rezept in Spalten schreiben können.

Alternativ kann man auch gruppieren anklicken und bei Zutat so etwas wie
ersterWert oder LetzterWert angeben, dann wird aber nur eine Zutat angezeigt.

In einem Bericht kann man das Ganze dann wieder ganz schick machen, in dem man
diesen wie eine Abfrage Zeileweise aufbaut, aber in den Werten von Rezept ein
„doppelte Ausblenden“ anhakt, dann sieht es wieder gut aus, z.B. so:

Rezept1 Zutat1
Zutat2
Zutat3

Rezeot2 Zutat1
Zutat2

Gruß

Arne

also z.B. like „*eier*“ dann bekäme ich ja nur dann
das Rezept mehrmals aufgelistet, wenn es mehr als
eine Zutat gäbe die „*eier*“ enthält.

Die Datensätze sollen natürlich auch ungefiltert darstellbar sein.

‚keine Duplikate‘ ja auswählen.

Hab ich gemacht

das Feld tblRezepte.Titel ausblenden

Hab ich auch gemacht

Jetzt

Du musst über „Rezepte“ in der Abfrage gruppieren, so tritt
jedes gefundene Rezept nur einmal auf.

Arbeite ich dran. Hab noch ein paar Probleme mit ‚Aggregatfuntionen‘

Hallo Kevin,

probiere es mal mit der Gruppierung: Sigma Zeichen
Damit sollte es gehen. Aber bitte nur die Felder aufnehmen die für das Ergebnis wichtig sind.

Gruß
Reinold

Du musst über „Rezepte“ in der Abfrage gruppieren, so tritt
jedes gefundene Rezept nur einmal auf.

Arbeite ich dran. Hab noch ein paar Probleme mit
‚Aggregatfuntionen‘

Bei einer Gruppierung über „Rezept“ kann die Abfrage für „Zutat“ keinen sinnvollen Wert mehr zurückgeben, da es ja mehrere zutreffende Einträge geben könnte. Du könntest höchstens die „Anzahl“ der Zutaten je Rezept ausgeben, auf die der Suchbegriff passt. Scheint mir aber wenig hilfreich - Hauptsache ist doch der erfolgreiche Rezeptfund, oder?

Aber bitte nur die Felder aufnehmen die
für das Ergebnis wichtig sind.

Wie mache ich das? Wenn ich auf „Summen“ klicke, dann übernimmt er die Gruppierung automatisch für alle Spalten.

Aber bitte nur die Felder aufnehmen die
für das Ergebnis wichtig sind.

Wie mache ich das? Wenn ich auf „Summen“ klicke, dann
übernimmt er die Gruppierung automatisch für alle Spalten.

Nur die Felder aufnehmen, die für das Abfrageergebnis wichtig sind. Keine * Auswahl, sondern die Felder per Doppelklick in den QBE-Bereich übernehmen und dann die Summenfunktion aktivieren. Im Kriterien Bereich das Suchkriterium eingeben.

Gruß

Nur die Felder aufnehmen, die für das Abfrageergebnis
wichtig sind.

Gruppiert werden soll nur nach einer einzigen Spalte, aber alle adneren werden ebenfalls benötigt. Für Filter oder zur späteren Darstellung.

Hallo,
deine Antwort bricht leider (siehe unten) plötzlich ab.
Was wolltest noch sagen ?
lG R.

Das geht nicht. Dann musst Du mit separaten Abfragen arbeiten und ggf. per VBA die Datenquelle als SQL-String beim öffnen (Form oder Report) ändern

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,
deine Antwort bricht leider (siehe unten) plötzlich ab.
Was wolltest noch sagen ?
lG R.

Jetzt wird logischerweise der Titel auch nicht mehr angezeigt.
Ich suche eine Möglichkeit bei der nur Duplikate in einer Spalte (ID_Rezepte) ausgeblendet werden. Die anderen Spalten (in der original-DB sind es noch ein paar mehr) dürfen Duplikate enthalten (und sollen auch angezeigt werden).

Hallo Kevin,

ich muss leider passen, da ich Dir mit VBA leider nicht weiterhelfen kann.

Gruß
Michael

Sorry, das weiß ich jetzt so auch nicht. Vermutlich muss man irgendwie die Anzahl der zurückgegebenen Records begrenzen oderso.

Schon mal in der MySQL-Doc geguckt? Ist zwar nur ähnlich, hilft aber oft trotzdem weiter.

http://dev.mysql.com/doc/

Kristian

Wenn ich aber tblZutaten.Zutat in die Abfrage mit aufnehme, dann bekomme ich (logischerweise) jedes Rezept x-Mal in der Abfrage (für jede Zutat einmal). Wie umgehe ich das?

Laut Reinold (s.u.) liegt der Fehler in der Struktur. Ich kann (offensichtlich) gar nicht nach Zutaten suchen und dann nach ID gruppieren.

Hallo Kevin,

hast du es mal so probiert?
SELECT tblRezepte.Titel, tblZutaten.Zutat FROM (tblRezepte
INNER JOIN tblRezepteZuZutaten ON tblRezepte.id_rezepte = tblRezepteZuZutaten.id_rezepte_f)
INNER JOIN tblZutaten ON tblRezepteZuZutaten.id_zutaten_f = tblZutaten.id_zutaten WHERE tblZutaten.Zutat Like „*Suchwort*“;

Gruß Tim