Q&A

  • Re: having절에 관한 질문
그럴리가 없는데요. having절 되는데요.

음...혹시 델파이 코딩으로 옮기면서 뭔가 잘못하셔서 그런게 아닐까하는데요.



헉..5분후.... 한번 테스트를 해봤는데요.

subselect에서 having 절을 사용해봤는데... 안 먹네요. 제가 잘못한건쥐 아님 원래 안되는건지..저도 궁금해집니다. 그냥 당연히 되는게 아닌가 하고 생각했었는데... 자료를 한번 찾아봐야겠슴당... 밥먹구 와서요. 그럼..



푸하하 wrote:

> 질문있슴다. 델에서 having절이 먹질 않나여?

> 자꾸 지원이 안되기땜에 실행이 안된다는 에러메시지가 쿼리를 open할때 납니다.

>

> MS-SQL의 Query Analyzer를 사용하면 잘 되는데 말입니다.

> 아구구~ 참으로 속상합니다.

> 아래는 제가 대입한 SQL 문장입니다.

> 검색버튼을 누를때에 1, 3등의 숫자를 받아서 비교합니다.

> 아래는 편의상 기냥 적었구요.

> 검토해 주시고 좀 가르켜 주세요...잉~잉~ㅜㅜ

>

> 고객(AA) 테이블, 대여기록(BB) 테이블에서 대여건수가 1건에서 3건인 고객의 모든 정보를 보기 위하여.

>

> select * from AA

> where custid in (select custid from BB //custid ->고객코드

> group by custid

> having count(custid) between 1 and 3 )

2  COMMENTS
  • Profile
    바사기몬 2000.08.29 04:01
    저는 오라클에서 테스트를 해 보았는데요.. 잘 수행됩니다..

    제가 알기로 sql문은 TQuert가 됐건 TTable이 됐건

    Db에 가서 해석되어지기 때문에 DB자체에서 수행이 되는 sql문이라면

    Delphi에서 처리 되는게 원칙으로 알고 있습니다.



    일부 DB는 SQL문 형식이 다른 경우가 있습니다..

    예를들어 델파이와 함께 배포되는 InterBase는 몇가지 구문규칙이

    표준SQL과는 표현형식이 상이한 경우가 있습니다..

    저는 그 부분이 의심스럽습니다만..

    앞에서 얘기 하셨듯이 MS-SQL에선 잘 수행되는 문이라고 하시니

    잘 이해가 안가는 군요.. 제가 MS-SQL을 잘 몰라서요..

    도움이 안돼 죄송하구요..

    혹시나 참고가 될까해서 올린글입니다..



    임형호 wrote:

    > 그럴리가 없는데요. having절 되는데요.

    > 음...혹시 델파이 코딩으로 옮기면서 뭔가 잘못하셔서 그런게 아닐까하는데요.

    >

    > 헉..5분후.... 한번 테스트를 해봤는데요.

    > subselect에서 having 절을 사용해봤는데... 안 먹네요. 제가 잘못한건쥐 아님 원래 안되는건지..저도 궁금해집니다. 그냥 당연히 되는게 아닌가 하고 생각했었는데... 자료를 한번 찾아봐야겠슴당... 밥먹구 와서요. 그럼..

    >

    > 푸하하 wrote:

    > > 질문있슴다. 델에서 having절이 먹질 않나여?

    > > 자꾸 지원이 안되기땜에 실행이 안된다는 에러메시지가 쿼리를 open할때 납니다.

    > >

    > > MS-SQL의 Query Analyzer를 사용하면 잘 되는데 말입니다.

    > > 아구구~ 참으로 속상합니다.

    > > 아래는 제가 대입한 SQL 문장입니다.

    > > 검색버튼을 누를때에 1, 3등의 숫자를 받아서 비교합니다.

    > > 아래는 편의상 기냥 적었구요.

    > > 검토해 주시고 좀 가르켜 주세요...잉~잉~ㅜㅜ

    > >

    > > 고객(AA) 테이블, 대여기록(BB) 테이블에서 대여건수가 1건에서 3건인 고객의 모든 정보를 보기 위하여.

    > >

    > > select * from AA

    > > where custid in (select custid from BB //custid ->고객코드

    > > group by custid

    > > having count(custid) between 1 and 3 )

  • Profile
    임형호 2000.08.29 04:31
    위의 질문을 보고 테스트를 해보았습니다.



    select * from 출하마스터

    where 출하번호 in

    (select 출하번호 from 출하디테일

    group by 출하번호

    having count(출하번호) between 1 and 5

    )



    위의 문장을 해석하면 출하디테일에 있는 같은 출하번호를 그룹지어서 그 갯수가 1-5사인 출하번호를 검색해서 이것을 출하마스터DB의 조건문으로 검색하는거쟎습니까?

    안됩니다. 미치겠슴당...



    select 출하번호 from 출하디테일

    group by 출하번호

    having count(출하번호) between 1 and 5



    위의 부분을 따로 때어서 실행하면 당근되죠.

    근데 subselect문으로 붙이면 안됩니다. 뭘 잘못한걸까요?

    물론 출하마스터, 디테일 DB에 모두 출하번호라는 필드는 확실히 있습니다.



    SQL책에는 부속질의어에서도 having 된다고 써있는데...

    돌겠네요. 참고로 제가 사용하는 DB는 포스트그레스입니다.

    원래 지원을 안하는건쥐?







    바사기몬 wrote:

    > 저는 오라클에서 테스트를 해 보았는데요.. 잘 수행됩니다..

    > 제가 알기로 sql문은 TQuert가 됐건 TTable이 됐건

    > Db에 가서 해석되어지기 때문에 DB자체에서 수행이 되는 sql문이라면

    > Delphi에서 처리 되는게 원칙으로 알고 있습니다.

    >

    > 일부 DB는 SQL문 형식이 다른 경우가 있습니다..

    > 예를들어 델파이와 함께 배포되는 InterBase는 몇가지 구문규칙이

    > 표준SQL과는 표현형식이 상이한 경우가 있습니다..

    > 저는 그 부분이 의심스럽습니다만..

    > 앞에서 얘기 하셨듯이 MS-SQL에선 잘 수행되는 문이라고 하시니

    > 잘 이해가 안가는 군요.. 제가 MS-SQL을 잘 몰라서요..

    > 도움이 안돼 죄송하구요..

    > 혹시나 참고가 될까해서 올린글입니다..

    >

    > 임형호 wrote:

    > > 그럴리가 없는데요. having절 되는데요.

    > > 음...혹시 델파이 코딩으로 옮기면서 뭔가 잘못하셔서 그런게 아닐까하는데요.

    > >

    > > 헉..5분후.... 한번 테스트를 해봤는데요.

    > > subselect에서 having 절을 사용해봤는데... 안 먹네요. 제가 잘못한건쥐 아님 원래 안되는건지..저도 궁금해집니다. 그냥 당연히 되는게 아닌가 하고 생각했었는데... 자료를 한번 찾아봐야겠슴당... 밥먹구 와서요. 그럼..

    > >

    > > 푸하하 wrote:

    > > > 질문있슴다. 델에서 having절이 먹질 않나여?

    > > > 자꾸 지원이 안되기땜에 실행이 안된다는 에러메시지가 쿼리를 open할때 납니다.

    > > >

    > > > MS-SQL의 Query Analyzer를 사용하면 잘 되는데 말입니다.

    > > > 아구구~ 참으로 속상합니다.

    > > > 아래는 제가 대입한 SQL 문장입니다.

    > > > 검색버튼을 누를때에 1, 3등의 숫자를 받아서 비교합니다.

    > > > 아래는 편의상 기냥 적었구요.

    > > > 검토해 주시고 좀 가르켜 주세요...잉~잉~ㅜㅜ

    > > >

    > > > 고객(AA) 테이블, 대여기록(BB) 테이블에서 대여건수가 1건에서 3건인 고객의 모든 정보를 보기 위하여.

    > > >

    > > > select * from AA

    > > > where custid in (select custid from BB //custid ->고객코드

    > > > group by custid

    > > > having count(custid) between 1 and 3 )