2013-02-08 2 views
1

J'ai la requête mysql suivante pour une fonction de recherche. J'ai dans mes données 3 différents types de compte que je dois montrer dans un ordre spécifique. Pour cela j'ai utilisé ORDER BY FIELD(profiltype,2,1,3). Cela fonctionne très bien et sans problème, mais au sein de ces résultats, je dois également commander les différentes colonnes d'une priorité comme:Commander Résultats de la recherche search mySQL

1. name2 
2. a_z_feld1 
etc. 

Cependant, cela ne fonctionne pas avec la requête que j'ai ci-dessous. Il devrait garder l'ordre des types de profil mais dans cet ordre ont également une priorité des colonnes.

SELECT * FROM main_users 
WHERE ((name2 LIKE %s) 
OR (a_z_feld1 LIKE %s) 
OR (a_z_feld2 LIKE %s) 
OR (a_z_feld3 LIKE %s) 
OR (city LIKE %s) 
OR (content_stellenvor LIKE %s) 
OR (main_content LIKE %s)) 
AND levelmember <> 1 
ORDER BY FIELD(profiltype,2,1,3) ASC, 
a_z_feld1 ASC, a_z_feld2 ASC, a_z_feld3 ASC 
+0

essayer de indentez votre requête afin que nous puissions le lire – Ibu

+0

Fournir la seule requête MySQL pour être plus lisible. – Slowcoder

+0

priorité de QUELLES colonnes? Votre code me fait saigner les yeux. –

Répondre

0

Sur la base de votre commentaire, vous devez inclure name dans le order by:

ORDER BY FIELD(profiltype,2,1,3) ASC, name2, a_z_feld1 ASC, a_z_feld2 ASC, a_z_feld3 ASC 
+0

oui ... mais ça ne marche pas non plus. J'ai juste oublié de le prendre. Une solution simple serait simplement de faire: ORDER BY profiltype = 2 DESC, profiltype = 1 DESC, profiltype = 3 DESC, nom2 LIKE% s DESC, a_z_feld1 LIKE% s DESC, a_z_feld2 LIKE% s DESC, a_z_feld3 LIKE% s DESC, main_content LIKE% s DESC, content_stellenvor LIKE% s DESC mais ce n'est pas une bonne requête –

Questions connexes