Pergunta

Eu sempre me perguntei sobre isso, e agora um cliente está se perguntando se é feasable:

Eu tenho uma lista de esportes, discriminados como tal:

  • Boys Ice Hockey
  • Boys Tennis
  • Meninas do hóquei em gelo
  • Meninas Tennis

... etc

E eles querem isso para classificar como:

  • Boys Ice Hockey
  • Meninas do hóquei em gelo
  • Boys Tennis
  • Meninas Tennis

... etc

Eu só estou querendo saber se isso é possível, simplesmente alterando a consulta. Infelizmente, não posso definir os esportes para ser ser não específica de género e têm o seu conjunto de gênero como um campo separado. Eu não posso editar o banco de dados de forma significativa. Imaginei que a melhor maneira de abordar o problema é uma consulta "a maioria das palavras em comum", mas não tenho idéia de como isso seria feito.

Agradecemos antecipadamente por qualquer ajuda que vocês podem oferecer!

UPDATE: O cliente acabou desistindo do pedido, no entanto, eu teria abordado é mais provável que a resposta aceita. Ainda não é uma maneira completamente satisfatória de fazer as coisas, mas não tenho a certeza há uma solução mais "elegante", disponível no MySQL.

Foi útil?

Solução

Você pode fazer algo como

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

no mysql se todos os esportes começar Boys / Girls?

Como alternativa a seguir pode ser melhor se o espaço está sendo usado como um delimitador:

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

Completamente testado como eu não tentei isso antes e não tem uma instância mysql para testá-lo contra

Outras dicas

'A maioria das palavras em comum', como em comparar as palavras em cada linha com a próxima linha? Isso vai ser muito difícil no SQL porque sua difícil conseguir uma consulta para comparar linhas diferentes uns com os outros.

Você poderia pedir por uma declaração CASE prescritiva, mas não vai ser bonito:

...
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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top