Hilfe bei Abfrage

ropueh

Mitglied
Hallo
vielleicht ist es nur ein Suchbegriff, der mir fehlt, oder es gibt einen einfachen Befehl... hoffe, ihr könnt mir helfen.

edit: es geht natürlich um MySQL
Also... ich habe zB folgende Datensätze:

id = 1 | laden = Kaufland, Netto, Aldi
id = 2 | laden = Kaufland, Lidl
id = 3 | laden = Lidl, Netto

es gibt dann eine Suchmaske mit Checkboxen, wo man die Läden auswählen kann... also bsw. Kaufland und Aldi.
daraufhin sollen dann also nur 1 und 2 ausgegeben werden...

wie sieht jetzt der SELECT nach dem WHERE aus? Gibt es was äquivalentes zu in_array bei PHP oder muss ich den String "laden" auflösen?

Danke im Voraus
 
Zuletzt bearbeitet:
Hi,

die DB-Struktur ist für geforderte Suche nicht unbedingt optimal. Dennoch funktioniert es mittels LIKE, leider aber nicht sehr schnell.

Code:
SELECT id, laden FROM <table> WHERE laden LIKE '%kaufland%' OR laden LIKE '%aldi%'

Wie gesagt, ist diese Abfrage nicht wirklich empfehlenswert. Bei 3 DS mag das alles kein Problem sein, aber ab einer gewissen Datenmenge hast du ein erhebliches Performance- und Last-Problem.

Grüße BN
 
Bei MySQL gibts noch eine bessere Variante, damit er AldiNord und Aldi unterscheiden kann.

FIND_IN_SET() heisst der Befehl. Er sucht einen String in einem Set von kommaseparierten Strings.
SQL:
SELECT FIND_IN_SET('bar', 'foo,bar,test') > 0
Da du deine Liste mit Leerzeichen nach dem Komma hast, geht es nicht direkt. Also zuerst die Leerzeichen nach dem Komma entfernen und schon gehts

Hier mal ein Test (Du musst natürlich das ganze in den WHERE-Teil quetschen
SQL:
SELECT FIND_IN_SET('bar', REPLACE('foo, bar, test', ', ', ',')) > 0
 
Zuletzt bearbeitet von einem Moderator:
Zurück