묻고답하기
xml query 문 작성 질문입니다.
2009.08.25 19:00
안녕하세요.
개인적인 목적으로 모듈을 만들어서 쓰고 있습니다.
SELECT member.member_srl, member.user_name, bowlingpoint.regdate, bowlingpoint.point_total, bowlingpoint.last_update
FROM xe_member member, xe_bowlingpoint bowlingpoint
WHERE member.member_srl = bowlingpoint.member_srl
AND member.is_admin = 'N'
AND bowlingpoint.bowlingpoint_srl in (select max(xe_bowlingpoint.bowlingpoint_srl) from xe_bowlingpoint GROUP BY xe_bowlingpoint.member_srl)
의 쿼리문을 xml query로 작성하려고 하는데 잘 안되네요. 고수님들께 부탁 좀 드리겠습니다. ^^;
테이블 설계를 애초에 잘못한거라고 말씀 주실 수 있으나 많은 것을 변경해야 해서요 ^^;
우선 member_srl 로 group by 하는 것을 기준으로 각 회원에 별도의 포인트(홈페이지 포인트가 아닌 볼링 동호회 포인트 ^^;)를 주고 있습니다.
입력 폼은 이상없이 잘 되고 있고요.
bowlingpoint_srl | member_srl | regdate | last_update | point_total |
1 | 100 | 20090501 | 20090520 | 500 |
2 | 100 | 20090505 | 20090525 | 700 |
3 | 101 | 20090510 | 20090520 | 300 |
4 | 101 | 20090515 | 20090525 | 200 |
5 | 102 | 20090520 | 20090520 | 900 |
이런 테이블이 있다고 가정할 때
member_srl regdate last_update point_total
100 20090505 20090525 700
101 20090515 20090525 200
102 20090520 20090520 900
이런 결과가 나오길 원합니다.
개인별 최종 입력일자(last_update) 또는 bowlingpoint_srl(auto_increase기 때문에)의 최대값 중에서 regdate,와 point_total 값을 가져오고 싶습니다.
고수님의 조언과 함께 부탁을 드립니다. 감사합니다. ^^
댓글 2
-
라르게덴
2009.08.25 21:15
-
impre
2009.08.25 23:27
답변 감사 드립니다. ^^;
SQL 부하가 많이 걸리는 것이 염려스러워서 고민을 해 본 것인데, php로 루프 돌려야겠네요 ㅎ
core 개발 하시는 분들께서 다음 버전에는 이런 것도 고려를 해주시면 감사하겠습니다. ^^
미천한 실력으로 보면, 서브쿼리는 일단 XML로 만들기 어려울 것 같습니다. 아직 서브쿼리에 대한 파싱은 없는걸로 알고 있습니다.
두번째는 Group by 에서 regdate나 point_total 은 엄현히 다른 값이기 때문에 group by 해도 위 값 그대로 나올 것 같습니다.
방법을 달리해보십시오.
저 같으면 member_srl을 regdate 등 변화수 기준으로 group by로 member_srl만 뽑고 그 뒤 다시 한번 더 Query문을 만들어서 해당 멤버의 최근 조건 정보든 뭐든 만들어서 출력할 것 입니다.
XE도 보면 고급기술을 이용한 전문 쿼리가 안되는 대신 2차 3차로 PHP를 의존하여 결과물을 만들어 내고 있습니다.
방법은 많으니 한번에 뽑지말고 여러 함수를 서로 엮에서 하나의 결과물을 만들어보도록 해보세요 ^^