LIKE auf Datenbank-Feld

daryl

Mitglied
Hallo,

ich habe folgende Query, die funktioniert allerdings nicht:
Code:
SELECT fmsp_agent.email as email,fmsp_agent.ID as ID,fmsp_agent.name as name,angebote.name as titel FROM angebote,fmsp_agent WHERE fmsp_agent.artikel LIKE '%angebote.name%' AND fmsp_agent.userok='1'
Das Problem ist das LIKE, denn eigentlich akzeptiert er das nur, wenn dort ein String steht. Geht es aber auch, dass der gleich die andere Tabelle mit einbezieht? Oder ist das nur mit 2 Queries mit (eine zum Holen des LIKE-Strings und eine dann wie oben nur eben mit dem eingfügten LIKE-String)?
 
Hi,

Wie du schon richtig festgestellt hast, ist das Problem der Spaltenname.
Wenn "fmsp_agent.artikel" und "angebote.name" den selben Inahlt haben, also genaue Schreibweise, dann kannst du das Problem schnell aus der Welt schaffen, in dem du
fmsp_agent.artikel LIKE '%angebote.name%'
durch
fmsp_agent.artikel = angebote.name
ersetzt.

Wenn es jedoch so ist, dass der Inhalt nur ähnlich st, ist der Vergleich nicht wirklich zu empfehlen:
1. Ist ein Vergleich mit LIKE sehr langsam, was vorallem in Anwendungen, in denen es auf Performance ankommt, sehr von nachteil ist.
2. kann es, vorallem bei großen Datenmengen dazu kommen, dass du mehr erhälst, als du eigentlich willst.

Wenn du LIKE nicht durch = ersetzen kannst, Versuch es so zu ändern, dass du in fmsp_agent die Artikelnummer der eine ID speicherst.

Wenn du jeodch beim LIKE-Vergleich bleiben willst, versuch mit CONCAT (bei MySQL) die %-Zeichen und den Inhalt der Spalte zu verknüpfen, so dass dein gewünschter String entsteht. Aber wie jedoch erwähnt, sind solche Konstrukte nicht unbedingt zu empfehlen
 
Zurück