Pregunta

Siempre me he preguntado sobre esto, y ahora un cliente se pregunta si es factible:

Tengo una lista de deportes, desglosada como tal:

  • Hockey sobre hielo para niños
  • Tenis para niños
  • Hockey sobre hielo para niñas
  • Tenis para niñas

... etc

Y quieren que se clasifique como:

  • Hockey sobre hielo para niños
  • Hockey sobre hielo para niñas
  • Tenis para niños
  • Tenis para niñas

... etc

Me pregunto si esto es posible simplemente alterando la consulta. Desafortunadamente, no puedo configurar los deportes para que no sean específicos de género y tener su género establecido como un campo separado. No puedo editar la base de datos de manera significativa. Pensé que la mejor manera de abordar el problema es la mayoría de las palabras en común. consulta, pero no tengo idea de cómo se haría esto.

¡Gracias de antemano por cualquier ayuda que puedan ofrecer!

ACTUALIZACIÓN: El cliente terminó rechazando la solicitud, sin embargo, probablemente la habría aceptado como la respuesta aceptada. Todavía no es una forma completamente satisfactoria de hacer las cosas, pero no estoy seguro de que haya una forma más "elegante". solución disponible en MySQL.

¿Fue útil?

Solución

¿Puedes hacer algo como

ORDER BY SUBSTRING(sport_name, 6), SUBSTRING(sport_name, 1, 5) 

en mysql si todos los deportes comienzan con Boys / Girls?

Alternativamente, lo siguiente podría ser mejor si el espacio se usa como delimitador:

ORDER BY SUBSTRING(sport_name, LOCATE(sport_name, ' ')), SUBSTRING_INDEX(sport_name, ' ', 1)

Completamente no probado ya que no lo he probado antes y no tengo una instancia de mysql para probarlo

Otros consejos

¿'La mayoría de las palabras en común' como en comparar las palabras comunes en cada fila con la fila siguiente? Eso será bastante difícil en SQL porque es difícil obtener una consulta para comparar diferentes filas entre sí.

Puede ordenar por una declaración CASE prescriptiva, pero no será bonita:

...
order by CASE sport_name
    WHEN 'Boys Ice Hockey' THEN 1
    WHEN 'Girls Ice Hockey' THEN 2
    WHEN 'Boys Tennis' THEN 3
    WHEN 'Girls Tennis' THEN 4
    -- etc
END CASE
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top