내 데이터베이스에는 악기 이름 (및 다양한 기타 속성)이 저장됩니다. id
이 기본 키이고 name
이 고유 키라고 가정 해 보겠습니다. PHP 스크립트에서 임의의 순서로 SQL 행 출력 정렬?
$name = mysql_real_escape_string($_POST['name']);
$row = mysql_fetch_row(mysql_query("SELECT * FROM `instruments` WHERE name LIKE '%$name%' ORDER BY id"));
결과 테이블 :
id name
1 "Flute 2"
2 "Bass Flute"
3 "Flute 10"
4 "Flute 7"
이처럼, 나 악기의 전체 제품군을 선택할 수 있습니다 소프라노 색소폰 ","알토 색소폰 "등"색소폰 "을 쿼리하는 것만으로도 가능합니다.
해당 특정 예에서 결과는 해당 id (auto_incremented라고 가정 할 수 있음)에 의해 표시됩니다. 알파벳 순서로 주문하는 것이 더 이상적일까요?
id name
2 "Bass Flute"
3 "Flute 10"
1 "Flute 2"
4 "Flute 7"
잘 작동하지만있는 음악가, 그들은 DB 관리자와 함께 주변 나사, 그리고 플루트 결과에 "플루트"위에 나열된 "베이스 플루트"를 가진받지 않는
및 정말 "Flute 2"앞에 "Flute 10"이 표시되지 않도록주의하십시오.
따라서 ORDER BY score_order
이 없으므로 (너무 쉽지는 않을 것입니다 ...) 악기를 올바르게 표시하기 위해 일종의 정렬 시스템을 어떻게 도입 할 수 있습니까?
브레인 스토밍을 할 때 나는 하나의 해결책을 찾았습니다. integer 유형의 열을 하나 더 추가하고 악기의 중요도에 따라 "계급"할 수 있습니다 (즉, Piccolos는 "1", Flutes "2" 등) :
... nts` WHERE name LIKE '%$name%' ORDER BY rank, name"));
id name rank
3 "Flute 10" 2
1 "Flute 2" 2
4 "Flute 7" 2
2 "Bass Flute" 5
그러나,이 "플루트 (10)는" "플루트 2 '앞에 오는 사실, 영숫자 고려하지 않습니다.
이상적인 결과 테이블 (name
에 의해 다음 rank
에 의해 주문 등) :
id name rank
6 "Piccolo" 1
1 "Flute 2" 2
4 "Flute 7" 2
3 "Flute 10" 2
5 "Alto Flute" 4
2 "Bass Flute" 5
그래서, 내 질문 :
- 이것이 가능한 솔루션이며, 노력이 가치가있다 도구?
- 숫자가 아닌 숫자 대신 전체 숫자를 분석하여 SQL 주문 레코드를 가질 수 있습니까?
고마워요!
좋은 지적입니다. 이상적으로, 악기 thusly 히 나열됩니다 : 플루트 1 플루트 2 플루트 3 알토 플루트 베이스 플루트 ...'score_order' 필드에 의해 주문은 여전히 영숫자 것, 그것은 확실히 아니다 내가 찾고있어. –
나는 좀 더 시각화 할 수 있도록 예제 테이블을 질문에 추가했습니다. 감사합니다 :) –
'score_order'를 영숫자가 아닌 숫자 필드로 만들 수 있습니까? ('score_order'는 악기가 악보에 나오는 순서라고 가정하고 있는데, 잘못 해석 했습니까?) –