brand: MySQL Query

Beitrag lesen

Hi!

Das klingt nach einem mißlungenen relationalen Entwurf.

das ist leicht möglich

Wenn diese Spalten verschiedene Bedeutungen haben, dann
macht Deine Abfrage keine Sinn.
Wenn sie dieselbe Bedeutung haben, wieso sind sie dann
auf verschiedene Tabellen verteilt?

die Spalten haben verschiedene Bedeutung und trotzdem halte ich die Abfrage für sinnvoll.

Zur Erläuterung meiner Gedanken diesbezüglich:

rezept enthält die Felder
nr (eindeutige nr),
name (name des rezepts),
und noch ein paar weitere (Zubereitung, Kommentar, ...).

Nun beinhaltet ein Rezept eine unbestimmte Anzahl von Ingredienzien. Deshalb die Tabelle ingre mit den Feldern
id (eindeutige nummer),
name (name der Ingredienz),
reznr (die nr des Rezeptes zu dem diese Ingredienz gehört)
und noch ein paar andere (Menge, Alkoholgehalt, etc.)

ich möchte nun nach einem Begriff suchen wobei die Query das Rezept ausgibt bei dem der Begriff entweder im namen des Rezeptes vorkommt oder im Namen einer Ingredienz. Es soll dabei ein Rezept nur einmal ausgegeben werden.

Also: wenn ich nun z.Bsp. nach "Tequila" suche macht es sinn sowohl die namen der Rezepte (Treffer z.Bsp.: "Tequila Sunrise") als auch die namen der Ingredienzien (Treffer z.Bsp: Tequila als Ingredienz von Tequila Sunrise und von Margarita) zu durchsuchen. Außerdem soll der Besucher einfach einen Begriff eingeben und nicht auswählen müssen ob er nun nach einem Rezeptnamen sucht oder nach einer Ingredienz ("Bloody Mary" wird nur in rezept.name gefunden nicht aber in ingre.name, "Zironensaft" dagegen wird nur in ingre.name gefunden und nicht in rezept.name)

Und genau das macht meine Query (war wohl eher Zufall) ;-)

Meine Frage bezog sich nun darauf, ob ich die 2 LIKE-Abfragen zu einer zusammenfassen kann (sonst habe ich ja bald eine elendslange Query wenn nun jemand nach Gin Wodka Whisky Rum Cognac und Tequila sucht, v.a. weil ich noch eine dritte Spalte einer weiteren Tabell gleichzeitig durchsuchen möchte) - aber wie ich aus den anderen Antworten entnehme ist das wohl nicht (oder nur durch zusätzlichen Aufwand, der meine "Vereinfachung" ja ad absurdum führen würde) möglich.

mfG
BRAND