Question

Je me suis toujours posé la question et un client se demande maintenant si c'est faisable:

J'ai une liste de sports ventilés comme suit:

  • Hockey sur glace garçons
  • Tennis garçons
  • Hockey sur glace féminin
  • Tennis de filles

... etc

Et ils veulent que ça sorte comme:

  • Hockey sur glace garçons
  • Hockey sur glace féminin
  • Tennis garçons
  • Tennis de filles

... etc

Je me demande simplement si cela est possible en modifiant simplement la requête. Malheureusement, je ne peux pas faire en sorte que les sports ne soient pas spécifiques au genre et que leur genre soit défini séparément. Je ne peux pas éditer la base de données de manière significative. Je pensais que la meilleure façon d’aborder le problème était un "la plupart des mots en commun". requête, mais je ne sais pas comment cela se ferait.

Merci d'avance pour toute aide que vous pourrez apporter!

UPDATE: Le client a fini par abandonner la demande. Cependant, je l'aurais probablement abordée comme la réponse acceptée. Ce n’est toujours pas une façon de faire complètement satisfaisante, mais je ne suis pas sûr qu’il existe une solution plus "élégante". solution disponible dans MySQL.

Était-ce utile?

La solution

Pouvez-vous faire quelque chose comme

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

en mysql si tous les sports commencent par des garçons / filles?

Sinon, les options ci-dessous pourraient être meilleures si l'espace est utilisé comme délimiteur:

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

Complètement non testé car je n'ai pas essayé auparavant et je n'ai pas d'instance mysql pour le tester

Autres conseils

"La plupart des mots communs" comparent les mots courants de chaque ligne avec la ligne suivante? Ce sera assez difficile en SQL car il est difficile de faire une requête pour comparer différentes lignes les unes avec les autres.

Vous pouvez commander à l'aide d'une instruction CASE normative, mais ce ne sera pas joli:

...
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top