Ich möchte Daten aus einer Tabelle mit mehreren Bedingungen herausfiltern, daher verwende ich die folgende Abfrage.Sortierung basierend auf der Anzahl der Bedingungen
Das funktioniert wie erwartet, aber jetzt muss ich das Ergebnis basierend auf der Anzahl der Bedingungen sortieren, die durch die Zeile erfüllt werden. Zum Beispiel, wenn eine Zeile alle oder Anweisungen erfüllt, dann sollte es an der Spitze sein und einzelne Bedingung sollte am Ende sein. Wie kann ich das erreichen?
Was habe ich versucht:
WHERE (LOWER(`content`) LIKE LOWER('%{$keywords}%')
OR LOWER(`fname`) = LOWER('{$keywords}')
OR LOWER(`title`) = LOWER('{$keywords}')) AND approval=1
ORDER BY
WHEN LOWER(`content`) LIKE LOWER('%{$keywords}%') AND LOWER(`fname`) = LOWER('{$location}') AND LOWER(`title`) = LOWER('{$keywords}') THEN 1
WHEN (LOWER(`content`) LIKE LOWER('%{$keywords}%') AND LOWER(`fname`) = LOWER('{$keywords}'))
OR (LOWER(`post_author_fname`) = LOWER('{$keywords}') AND LOWER(`title`) = LOWER('{$keywords}'))
OR (LOWER(`content`) LIKE LOWER('%{$keywords}%') AND LOWER(`title`) = LOWER('{$keywords}')) THEN 2
ELSE 3 END
ASC;
Gibt es eine einfache Alternative?
arbeiten ist einfach :) –