Q&A

  • select * from (select...에 대해서
오라클의 sql문을 보면 "select * from (select..."라는게 있는데
위 문법은 어떤때 사용하는 거죠. 그리고, 사용법좀 ....
select * from table_name where만 사용하다가....
4  COMMENTS
  • Profile
    최용일 2007.07.10 00:35
    이러한 것을 서브쿼리라고 하죠.

    select ~ from table_name은 table_name전체에서 조건에 맞게 select하는것이고,
    select ~ from (select ~)는 select된결과에서 다시 조건에 맞게 select하는것입니다.
    select하는 대상을 어떤것으로 하느냐만 차이가 있을뿐입니다.

    사용법이야 select문과 같습니다. table_name안에 select문이 들어가죠...

    서브쿼리는 DB에 따라서 지원하지 않을수도 있습니다.
    오라클은 지원하구요...

  • Profile
    강중규 2007.07.10 01:25
    답변 감사합니다. 그런데 잘 이해가 안되내요.

    아래와 같이 두개의 데이터가 존재하고, 우편으로 찾아서 다음과 같이 출력하고자 합니다.
    juso데이터
    post    juso
    302700  대전광역시 서구 둔산1동

    nabseja데이터
    post    other_juso
    302700  1234

    ==>결과
    우편번호 주소                     나머지 주소
    302700   대전광역시 서구 둔산1동  1234

    query로 작성을 어떻게 해야 하죠.

    select a.post 우편번호,a.juso 주소 from (select other_juso from post where
    post = a.post) juso a;


  • Profile
    성더기 2007.07.25 03:08
    Join 에 대해서 공부해보셔야 할거 같습니다


    쿼리문은
    select a.post as "우편번호", a.juso as "주소", b.other_juso as "나머지 주소"
    from  juso데이터 a,  nabseja데이터 b
    where a.post  = b.post

    select a.post as "우편번호", a.juso as "주소", b.other_juso as "나머지 주소"
    from  juso데이터 a,  nabseja데이터 b
    where a.post  = b.post (+)

    select a.post as "우편번호", a.juso as "주소", b.other_juso as "나머지 주소"
    from  juso데이터 a,  nabseja데이터 b
    where a.post(+)  = b.post

    등 여러가지 방법이 있습니다
    최용일님 답변처럼 sub쿼리를 쓰셔두 되구요

    위 3가지 방식은 첫번째는 두개의 테이블에 post 값이 둘다 존재해야만 자료가 나옵니다
    inner join 이라고 합니다
    두번째나 세번째는 outer join 이라고 하는데 두 테이블중 한테이블에만 값이 존재해도
    쿼리 결과가 리턴됩니다


  • Profile
    최용일 2007.07.10 02:29
    방법은 많죠...

    case1:
    select juso.post as 우편번호, juso.juso as 주소, nabseja.other_juso as 나머지주소
    from juso, nabseja
    where (juso.post = 302700) and (nabseja.post = 302700)
    and (juso.post = nabseja.post)

    case2:
    select juso.post as 우편번호, juso.juso as 주소, nabseja_view.나머지주소
    from juso,
    (
    select nabseja.post, nabseja.other_juso as 나머지주소
    from nabseja
    where (nabseja.post = 302700)
    ) nabseja_view
    where (juso.post = nabseja_view.post)