MySQL - IF Abfrage beim sortieren

proloser

Erfahrenes Mitglied
Hallo,

ich möchte meine Ausgaben nur sortieren wenn folgende Faktoren vorhanden sind:

SQL:
SELECT 
  *
FROM 
  `table`
  
ORDER BY    

  IF(
    `id` = '$submit_id',
    `sort` * 10, 
    `sort` * 1
  ) 
  
  DESC

Es werden alle Datensätze ausgelesen (Faktor 1) - die mit einem Treffer jedoch ganz oben (Faktor 10)

Nun zu meinem Problem:
Ich möchte zudem noch, wenn ein eingegebener Text übereinstimmt der Faktor 5 verwendet wird.

SQL:
....
....

  IF(
    `text` = '$submit_text',
    `sort` * 5, 
    `sort` * 1
  )

  DESC
 
...
...

Ich möchte also die zwei IF Abfragen zusammenfügen. In PHP würde es so aussehen:

PHP:
if(id == submit_id) {
  sort * 10
} elseif(text == submit_text) {
  sort * 5
} else {
  sort * 1
}


Die Abfrage ist zwar unlogisch aber ich hab sie vereinfacht, damit es hoffentlich verständlich ist.

Gruß proloser
 
Zuletzt bearbeitet von einem Moderator:
So müsste es gehen:
SQL:
SELECT *
  FROM `table`
  ORDER BY IF(`id` = '$submit_id', 10, IF(`text` = '$submit_text', 5, 1))
  DESC
  ...
 
Vielen Dank, ich habe inzwische noch etwas gefunden das funktioniert.

SQL:
CASE

  WHEN
  THEN 

  WHEN
  THEN 

ELSE

END
 
Zuletzt bearbeitet von einem Moderator:
Wenn du es gerne so kompliziert magst, dann nimm deine Lösung. Ich würde immer in so einem Fall meine Lösung nehmen.
 
Zurück