DB에 없는 값으로 테이블 정렬하기

DB에 없는 값으로 테이블 정렬하기

QA

DB에 없는 값으로 테이블 정렬하기

본문

회원정보를 출려가는 테이블을 만들었는데요.

테이블 값 중 하나가 DB에 저장되어 있지 않은 값입니다.

그런데 이값으로 테이블을 정렬할 방법은 없나해서 질문 드립니다.

 

예를 들어

----------------------

mb_name   rate

----------------------

김태희        30

정우성        70

 

이렇게 되어 있는 테이블을 rate값으로 오름차순과 내림차순을 하고 싶습니다.

이때 rate는 DB에 저장되어 있는 것이 아니라 연산을 통해 새로 얻은 값입니다. (회정정보를 sql_query로 가져온 후 sql_fetch_array에서 rate 계산) 연산량이 많아서 sql안에 넣기는 힘듭니다.

 

그래서 sql_query를 실행할때 order by로는 오름차순(내림차순)을 못하는것 같습니다.

 

rate값으로 정렬할 수 있는 방법이 없을까요??

이 질문에 댓글 쓰기 :

답변 4

우선 배열을 두개 만드셔서,

첫번째(A)는 2차원배열로 key : mb_id , value : 회원정보

두번째(B) 배열은 1차원배열로 key : mb_id, value : rate

형태로 정의해주시구요,

 

결과값을 각각 A,B 배열에 넣으신 후 B배열을 가지고

아래 배열 정렬 함수들을 이용하여 소팅 후에 소팅된 B배열의 key값(mb_id)을 가지고 회원 정보 배열(A배열)에서 해당 정보를 가져오면 좋을 듯 합니다.

 

B배열의 rate값을 가지고 정렬하시면 제생각에는 sort()나 rsort()를 이용하시면 좋을듯하네요^^

그러면 정렬된 B배열의 key값이 mb_id가 될테니...  B배열의 key값(mb_id)을 가지고 A배열의 key값으로 불러오면 해당 회원의 정보들이 1차원 배열로 나오겠죠?!^^

 

 

  • arsort() - 배열을 내림차순 정렬하고 인덱스의 상관관계를 유지
  • asort() - 배열을 정렬하고 인덱스 상관 관계를 유지
  • ksort() - 키에 의한 배열 정렬
  • rsort() - 역순으로 배열 정렬
  • usort() - 사용자 정의 비교 함수를 사용하여 값에 의한 배열 정렬
  • uksort() - 사용자 정의 비교 함수를 사용하여 키에 의한 배열 정렬
  • array_multisort() - 여러 배열이나 다차원 배열 정렬
  • krsort() - 키에 의한 배열 역순 정렬
  • natsort() - "자연순" 알고리즘으로 배열 정렬
  • natcasesort() - "자연순" 알고리즘으로 대소문자를 구분하지 않고 배열 정렬

rate는 DB에 저장되어 있는 것이 아니라 연산을 통해 새로 얻은 값입니다.

라고 했습니다.

rate 라는 것이 어떤 정보인지는 모르겠지만,  rate 의 값에 영향이 생기는 일이 발생하면 그것을 계산해서 g5_member 테이블에 rate 필드에 업데이트를 해서 관리하는게 더 효율적이지 않을까 생각합니다.

$sql 따로빼셔서 잘이용하시면 order 부분 변경하시는게 편하실텐데..ㅎㅎ 

계산을 sql로 수행하시고, join 기능을 이용해서 정렬하시는게 나을듯 싶습니다.(속도면에서도)

답변주셔서 감사합니다! 그런데 위에분께 말씀드린대로 연산량이 좀 많이 크고, 함수로 해당 연산은 구현되어 있는 상태라서 어떤 방법이 더 효율적일지에 대해 고민해봐야할것 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 7
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT