FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[2625] Re:Re:Re:Re:[질문]FB 2.0에서 MAX값 추출하기..
델맨 [] 1889 읽음    2007-11-09 09:38
답변 감사합니다.
도움이 많이 되었습니다.
음... 결국 서브쿼리를 써서 사용하기로 했습니다.
감사합니다.

푸른솔 님이 쓰신 글 :
: 두 번 퀴리를 하는게 아니라 결국 서브쿼리를 사용해서 해결을 하는 것입니다.
: select문장이 두 번 있어서 속도를 의심하겠지만 LOGDATETIME에 인덱스를 걸어두면
: 속도차이는 없습니다. 즉, 아무리 복잡한 쿼리라도 인덱싱만 잘 되어 있다면 속도문제는
: 걱정 안해도 됩니다. 그것이 노하우이겠지만........
:
: 또 다른 방법이 있다는 in-line view를 사용하는 방법입니다.
:
: SELECT   LOGDATETIME , LOGTYPE
: FROM  TBLLOG A,
:            ( SELECT  MAX(LOGDATETIME) FROM TBLLOG  WHERE LOGEMPID = 'user1' ) B
:  WHERE  A.GDATETIME = B.LOGDATETIME
:
: 유사하지만.....
: 참고로 이 in-line view는 FB 2.0이상에서만 지원하고, 그 이전 버전에서는 사용할 수 없는 문법이었죠.
: 쿼리를 많이 하다 보면 in-line view를 무수히 많이 사용하게 될 겁니다.
: 처음 질문처럼 간단하게 할려면 퀴리로는 안되고 Table구조를 조정해서 해야 할 겁니다.
: Table 구조를 잘 설계해 놓으면 그 만큼 쿼리도 쉬워집니다...
: 그것은 연구를 해 보시길.......
:
:
: 델맨 님이 쓰신 글 :
: : 푸른솔님 답변 감사합니다.
: : 그렇다면 max값을 먼저 구하고
: :  logtype 이렇게 두번쿼리를 해야한다는 이야긴지요?
: :
: : SELECT
: :     LOGDATETIME , LOGTYPE
: : FROM
: :     TBLLOG
: : WHERE
: :     LOGDATETIME = ( SELECT  MAX(LOGDATETIME) FROM TBLLOG  WHERE LOGEMPID = 'user1' )
: : 이런식으로 두번 쿼리 해야 한다는 말씀인지요.
: : 이렇게 해보았더니 되기는 하는데 한방에 쿼리를 실행하는게 아니라
: : 두번 나누어서 한다는게 조금 걸립니다.
: : 혹시 다른 방법이 있는지요.
: :
: : 푸른솔 님이 쓰신 글 :
: : : SELECT  MAX(LOGDATETIME)
: : : 그렇다면 select문에서  LOGTYPE을 제거하면 되겠죠...
: : :
: : : LOGTYPE별로 그루핑을 하면 당연히 아래와 같은 결과가 나옵니다.
: : : (LOGTYPE이 여러가지라면)
: : :
: : :
: : :
: : : 델맨 님이 쓰신 글 :
: : : : 제가 원하는 결과는
: : : : LOGDATETIME              LOGTYPE
: : : : -------------------------------
: : : : 2007-02-01 22:11:30       LOGOUT
: : : : 이렇게 최종 시간 기준으로 레코드 한개만 읽어오기를 원합니다.
: : : :
: : : : 그런데 아래의 쿼리로 해보면
: : : : -------------------------------------
: : : : SELECT                                                                    
: : : :     MAX(LOGDATETIME) , LOGTYPE
: : : : FROM                                                                      
: : : :     TBLLOG                                                                
: : : : WHERE                                                                     
: : : :     LOGEMPID = 'user1'
: : : : GROUP BY
: : : :     LOGTYPE;
: : : : -------------------------------------
: : : :
: : : : LOGDATETIME              LOGTYPE
: : : : -------------------------------
: : : : 2007-02-01 22:11:30       LOGOUT
: : : : 2007-02-01 20:10:22       LOGIN
: : : :
: : : : 이렇게 2개의 레코드가 나옵니다.
: : : : GROUP BY를 빼고 하면 에러가 나고 넣으면 LOGTYPE에 입력된 각각의 값중에서
: : : : 최대값을 가져오는데 저는 최대값을 가진 레코드의 LOGTYPE이 필요합니다.'
: : : : 고수님들의 조언을 구합니다.

+ -

관련 글 리스트
2621 [질문]FB 2.0에서 MAX값 추출하기.. 델맨 1675 2007/11/08
2622     Re:[질문]FB 2.0에서 MAX값 추출하기.. 푸른솔 1737 2007/11/08
2623         Re:Re:[질문]FB 2.0에서 MAX값 추출하기.. 델맨 1992 2007/11/08
2624             Re:Re:Re:[질문]FB 2.0에서 MAX값 추출하기.. 푸른솔 2036 2007/11/09
2625                 Re:Re:Re:Re:[질문]FB 2.0에서 MAX값 추출하기.. 델맨 1889 2007/11/09
2628                     Re:Re:Re:Re:Re:[질문]FB 2.0에서 MAX값 추출하기.. 까막 2166 2007/11/12
2633                         까막 님 감사합니다 델맨 2036 2007/11/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.