SQL LIKE Sortieren nach Trefferqualität und Ausgabe derselben

M.E.

Lt. Commander
Registriert
Jan. 2007
Beiträge
1.923
Hallo,

Wie man ein SQL Statement für eine Suche implementiert habe ich schon herausgefunden:
http://stackoverflow.com/questions/10070508/sqlite-like-order-by-match-query

Ich verwende folgende (hier vereinfachte) Abfrage, die einwandfrei funktioniert:
(mit PDO)
Code:
SELECT title, meta, content
FROM Page
WHERE `title` LIKE :term1
ORDER BY (CASE WHEN title = :term2 THEN 1 WHEN title LIKE :term3 THEN 2 ELSE 3 END), title
LIMIT 15
wobei
term1 = "%term%"
term2 = "term"
term3 = "term%"

Jetzt möchte ich das Ergebnis von
Code:
(CASE WHEN title = :term2 THEN 1 WHEN title LIKE :term3 THEN 2 ELSE 3 END)
mit im Ergebnis haben, sprich es muss irgendwie im SELECT auftauchen.

Wie bekomme ich das syntaktisch hin? Ich habe schon vieles Probiert aber immer nur Syntax Errors.

Hat wer einen Tipp?
Server-Typ: MariaDB

Danke im Voraus! :)
 
Zuletzt bearbeitet:
Schon
Code:
    SELECT title, meta, content, (CASE WHEN title = :term2 THEN 1 WHEN title LIKE :term3 THEN 2 ELSE 3 END) case
    FROM Page
    WHERE `title` LIKE :term1
    ORDER BY (CASE WHEN title = :term2 THEN 1 WHEN title LIKE :term3 THEN 2 ELSE 3 END), title
    LIMIT 15

Schon probiert?
Die Abfrage ist in PHP oder?
Lass mal die :term...Also Parameter Übergabe weg und mach mal Hardcoded ob du dann auch noch einen Syntax error bekommst.
Ich glaub im SELECT kann man keine :parameter verwenden.
Ergänzung ()

Achja und noch allgemein. Abfragen die nicht auf anhieb funktionieren würde ich am besten gleich direkt als SQL auf die Datenbank loslassen und stark vereinfachen und sich dann langsam rantasten, also ich hab so eigentlich generell größeren Erfolg.
 
Sollte es nicht mit

Code:
SELECT (...) AS foo
FROM ...
ORDER BY foo

gehen?
 
Hallo,

Danke, es funktioniert jetzt.
Ich habe es so gemacht, wie benneque vorgeschlagen hat.

Die Abfrage erst am Server zusammenzubauen hat sehr geholfen, da es viele kleine Syntaxfehler gab. Die Fehlerausgabe aus dem PDO mit PHP ist manchmal sehr wiedersprüchlich was Syntaxfehler angeht.

Danke!
 
Zurück
Oben