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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
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 기능을 이용해서 정렬하시는게 나을듯 싶습니다.(속도면에서도)

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

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

회원로그인

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