• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Mysql Index nach zahlen suchen (Volltextsuche)

silent321

New member
Hallo,

Ich brauche hilfe da ich nicht weiter weiß.

Ich habe eine Tabelle in einer Datenbank in welcher immer ID und ZUTATEN steht. ein Beispieleintrag ist zb:

ID: 1
ZUTATEN: 4, 2, 12, 50

mit folgender abfrage möchte ich die id´s der Einträge finden, welche nach dieser suchanfrage zustimmen:

PHP:
"
SELECT * FROM tabelle WHERE MATCH(zutaten) AGAINST ('+12 +4' IN BOOLEAN MODE)
"



Das funktioniert jedoch nicht.

folgendes Beispiel habe ich ausprobiert welches auch funktioniert:

ID: 1
ZUTATEN: Zucker, Milch, Sahne, Chilli

PHP:
"
SELECT * FROM test WHERE MATCH(text) AGAINST ('+zucker +milch' IN BOOLEAN MODE)
"


Mit Zahlen wie ich es möchte funktioniert das jedoch nicht :(

Den index in der mysql datebank sieht wie folgt aus:

ID = PRIMARY
ZUTATEN = FULLTEXT



Weiß einer von euch warum das nicht funktioniert bzw. wie es richtig funktioniert?


Gruß
 
Das scheint mir eine etwas umständliche Lösung zu sein.
Du hast ein Produkt und verschiedene Zutaten.
Mehrere Zutaten gehören zu einem Produkt; ein Produkt enthält mehrere Zutaten. Spricht irgendetwas dagegen, eine Kreuztabelle anzulegen?

produkt_zutaten:
id | produkt_id | zutaten_id

select produkt_id from produkt_zutaten where zutaten_id = 4 or zutaten_id=8
liefert dann die produkt_id der entsprechenden Produkte, die Zutat 4 oder 8 enthalten.


Kann sein, dass ich das falsch sehe. Eine Beschrebung, was Du genau tun möchtest, könnte hilfreich sein.
 
Zuletzt bearbeitet:
Ich weis es selber nicht genau welche methode am besten wäre.

ich habe 2 Tabellen:

Zutaten
und
Rezepte

bei Zutaten steht jedweils der name und die id.
zb:

ID="2"
NAME="Wasser"


bei Rezepte habe ich 3 Spalten, id, name, zubereitung, zutaten.
zb:

ID=4
NAME=Schwarzbrot
ZUBEREITUNG: man nehme... blab bla...
ZUTATEN: 2, 4, 12, 50


die zahlen bei Zutaten sind die ID´s der zutaten welche in der tabelle ZUTATEN steht.


Ich möchte nun eine suche wo ich zb eingebe:

Wasser, salz, mehl


und die suche fragt alle rezepte ab wo in den zutaten wasser salz und mehl vorkommt (und nebenbei dazu noch alle rezepte bei denen eine Zutat fehlen würde um das Rezept zuzubereiten mit einer Info was denn fehlt.)


Ich würde mich sehr über Lösungsvorschläge freuen

Gruß
 
Du solltest dich mal etwas mit Datenbankenschemas und deren Entwurf beschäftigen. In deiner Tabelle ordnest du einem Rezept in einem Wert (Zutaten) mehrere Werte zu. Sowas macht man nicht. Wie Luz schon gesagt hat, musst du dafür eine extra Tabelle anlegen in der du die Beziehungen zwischen Rezept und Zutat speicherst.

sprich:
Tabelle Zutaten mit zutaten_id und name,
Tabelle Rezept mit rezept_id und beschreibung
und eine Tabelle rel_rezept_zutaten mit rezept_id und zutaten_id.
Letzterer würde ich aber einen zusammen gesetzten Schlüssel geben (aus rezept_id und zutaten_id) statt einer eigenen id. Für jede Zutat eines Rezept erzeugst du jetzt einen Eintrag in der rel_rezept_zutaten Tabelle.
Hat den Vorteil dass das zu einem auf die Fähigkeiten einer DB besser zugeschnitten ist, außerdem könntest du jetzt noch weitere Attribute zu der Beziehung speichern, etwa die Menge der Zutat für dieses Rezept.
 
Zurück
Oben