테스트 사이트 - 개발 중인 베타 버전입니다

DB에 없는 값으로 테이블 정렬하기 채택완료

앞으로앞으로 7년 전 조회 3,931

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

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

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

 

예를 들어

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

mb_name   rate

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

김태희        30

정우성        70

 

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

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

 

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

 

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

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
크리티컬팀

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

첫번째(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차원 배열로 나오겠죠?!^^

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

앞으로앞으로
7년 전
친절한 설명 감사드립니다! 어떤 방법이 효율적일지 고민 좀 해봐야겠네요ㅋㅋㅋㅋ 함수들에 관한 설명들까지.... 혹시 천사십니까??ㅋㅋㅋ

댓글을 작성하려면 로그인이 필요합니다.

P
7년 전

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

댓글을 작성하려면 로그인이 필요합니다.

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

앞으로앞으로
7년 전
200줄이 넘고, 테이블이 5개가 이용되는 연산이라서요.... 연산값을 db에 넣는걸 고민해봐야겠습니다ㅋㅋㅋ 답변주셔서 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

해피정
7년 전

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

라고 했습니다.

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

앞으로앞으로
7년 전
답변주셔서 감사합니다! 해피정님이 다른대안을 제시해주셔서 선택할 수 있게 되었습니다!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인