2009-05-08 4 views
2

필드에 가장 일반적인 단어로 MySQL의 쿼리를 주문하고, 이제 클라이언트는 feasable인지 궁금해 :내가 항상 이것에 대해 궁금했습니다

나는 스포츠의 목록을 가지고, 같은과 같이 분류 :

  • 남자 아이스 하키
  • 남자 테니스
  • 여자 아이스 하키
  • 여자 테니스

... 등

그리고 그들이 그것을 정렬 할 같은 :

  • 남자 아이스 하키
  • 여자 아이스 하키
  • 남자 테니스
  • 여자 테니스

... 등

간단히 쿼리를 변경하여 이것이 가능한지 궁금합니다. 불행히도 나는 스포츠를 성별이 아닌 것으로 설정하고 성별을 별개의 분야로 설정하지 못합니다. 중요한 방법으로 데이터베이스를 편집 할 수 없습니다. 나는이 문제에 접근하는 가장 좋은 방법은 "가장 공통적 인 단어"쿼리라고 생각했지만 이것이 어떻게 될지 전혀 모른다.

미리 도움을 주셔서 감사합니다.

업데이트 : 클라이언트가 요청을 삭제했지만 결국 승인 된 답변으로 접근했을 것입니다. 아직 완전히 만족스러운 일을하는 방법은 아니지만 MySQL에서보다 "우아한"솔루션을 사용할 수 있는지 확신 할 수 없습니다.

답변

2

당신이 MySQL의에서

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

같은 일을 할 수 있습니까? 또한

공간이 구분 기호로 사용되는 경우 아래에 더 좋을 수도 :

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

완전히 검증되지 않은 내가 전에 이런 시도에 대한

+0

SUBSTRING에서 위치 및 길이 매개 변수를 섞어서 위치를 1에서 시작 함으로 업데이트되었습니다. – Trotts

+0

이 문제는 일반적으로 해결되지 않습니다 *, 그렇지 않습니까?:) – Tomalak

+0

그래, 내가 havent 그것을 테스트하고 atm 수 없습니다 오전, 나는 그것이 작동한다고 가정하면 약간 더 튼튼한있을 수있는 두 번째 옵션을 넣어 :) – Trotts

3

'가장 많이 사용하는 단어'는 각 행의 일반적인 단어를 다음 행과 비교하는 것입니까? 그것은 다른 열을 서로 비교하는 쿼리를 얻기가 어렵 기 때문에 SQL에서 꽤 어려울 것입니다.

당신은 규정 CASE 문에서 주문할 수 있지만 꽤 습관 : 모든 스포츠 소년/소녀로 시작하는 경우

 
... 
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 
+0

일에 대해 그것을 테스트 할 수있는 MySQL의 인스턴스를 해달라고 havent 한로 실용 주의적 접근. 이것은 예상 할 수있는 결과와 제한된 시간으로이를 수행 할 수있는 유일한 방법 일 수 있습니다. – Tomalak

관련 문제