Pouvez-vous ajouter une instruction if dans l'ORDRE?

Je suis en train d'atteindre les objectifs suivants:

J'ai une seule COMMANDE PAR une instruction qui peut varier en fonction de la valeur stockée dans la Colonne A.

Par exemple:

si le Type est Membre de trier par membre nom de famille
si le Type de regroupement, de tri par le Nom du Groupe

à la fois dans l'ordre Croissant.

Ma meilleure supposition de la déclaration finale serait:

SELECT * 
  FROM table 
 WHERE STATUS = 'Active' 
 ORDER BY ((LNAME if TYPE = 'Member') OR (GROUPNAME if TYPE = 'Group')) ASC

Je sais que c'est incorrect, mais ne peut pas trouver l'information ailleurs. Des idées?

  • Ainsi est-il possible que la requête retourne les deux types? Et si ne voulez-vous pas dire qu'il y a deux requêtes différentes une pour chaque type, alors il est facile de faire une clause order by pour chaque.
  • nous faisons cela dans le cas où le type ou le type est connu à l'avance (pensez à trier par lettre du nom), mais cela ne semble pas fonctionner dans ce cas particulier. Par exemple: $query = "SELECT * from table where STATUT = 'Active' ET ((LNAME LIKE 'A%' ET la PARTIE = 'Membre') OU (GROUPNAME LIKE 'A%' ET la PARTIE = 'Groupe')) ORDER BY KDATE ASC"; fonctionne }
  • Avez-vous changé le KDATE colonne d'une façon plus appropriée de la colonne type encore (Telles que la DATE ou DATETIME)?
  • Je l'ai fait sur quelques nouveaux tableaux et je suis dans le processus de migration des anciennes tables pour le nouveau format. Le problème principal a été suivi d'un "live" du site et de la base de données et de trouver la meilleure façon de modifier les scripts PHP avec base de données des structures sans gâcher un site qui prend de 400 inscriptions par jour.
  • Le progrès est la chose la plus importante. Rome ne s'est pas construite en un jour. Je suis heureux d'entendre qu'au moins les choses avancent vers le bas le meilleur chemin...
  • merci pour les encouragements! Son été une corvée, mais je pense qu'il sera bien la peine à la fin. Je prends aussi de vos conseils, de marche arrière et de restructurer l'ensemble de bases de données pour supprimer 'texte' types et de le remplacer avec peu de varchars (pour des choses comme les noms et les prénoms)

InformationsquelleAutor JM4 | 2010-08-23