Q&A

  • SQL문에 대해서...
안녕하십니까?

제가 생각하는 내용이 SQL문으로 가능한지 알고 싶습니다.

그러니까...

테이블이 A, B, C가 있습니다.

테이블의 각각의 필드는 아래와 같습니다.

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

A B C

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

필드/값 필드/값 필드/값

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

a1/'가' b1/'나' c1/'다'

b1/'나' b2/'나1' c2/'다1'

c1/'다' b3/'나2' c3/'다2'



제가 만약 테이블A,B,C를 조인해서 a1,b2,c2필드의 값을 구하고 싶다면

아래와 같이 SQL문을 작성하면 되겠죠.



Select a1, b2, c3

From A, B, C

Where A.b1 = B.b1 and A.c1 = C.c1



그런데 만약, A테이블의 c1필드에 값이 없다면('다'라는 값이 없다면)

위와 같은 SQL문으로 조인해서 Select를 하면 아무 값도 가져올 수가 없습니다. (join할 수가 없으니까, 빈 레코드만 가져오겠죠..)



제가 원하는 것은 A테이블의 c1필드에 값이 없다하더라도 b1필드에는 값이 있으니까 B테이블의 b2필드의 값은 가져와야 한다는 겁니다.(아래그림처럼요)

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

a1 b2 c2

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

'가' '나1' null

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



그러니까 여러 테이블끼리 join할 때 하나라도 join할 필드에 값이 없으면 데이타를 select해 올수가 없는게 당연하겠죠.

그런데 저는 join할 필드에 값이 있는 것만 조인해서 가져오고 join할 필드에 값이 없으면 그냥 그 필드에는 null값이 나오도록 하려는 겁니다.

제 질문이 너무 어렵나요? ^.^;

꼭 구해야 하는데.. 너무 답답하네요.

답변을 부탁드립니다.



읽어주셔서 감사합니다. ^.^



2  COMMENTS
  • Profile
    정주영 1999.08.14 05:35
    Outer Join을 이용해서 해결했습니다.

    SQL문은 다음과 같습니다.



    Select A.a1, B.b2, C.c2

    From B, A Left Join C

    on A.c1 = C.c1

    Where A.a1 = '가' and A.b1 = B.b1









    정주영 께서 말씀하시기를...

    > 안녕하십니까?

    > 제가 생각하는 내용이 SQL문으로 가능한지 알고 싶습니다.

    > 그러니까...

    > 테이블이 A, B, C가 있습니다.

    > 테이블의 각각의 필드는 아래와 같습니다.

    > ---------------------------------

    > A B C

    > ---------------------------------

    > 필드/값 필드/값 필드/값

    > ---------------------------------

    > a1/'가' b1/'나' c1/'다'

    > b1/'나' b2/'나1' c2/'다1'

    > c1/'다' b3/'나2' c3/'다2'

    >

    > 제가 만약 테이블A,B,C를 조인해서 a1,b2,c2필드의 값을 구하고 싶다면

    > 아래와 같이 SQL문을 작성하면 되겠죠.

    >

    > Select a1, b2, c3

    > From A, B, C

    > Where A.b1 = B.b1 and A.c1 = C.c1

    >

    > 그런데 만약, A테이블의 c1필드에 값이 없다면('다'라는 값이 없다면)

    > 위와 같은 SQL문으로 조인해서 Select를 하면 아무 값도 가져올 수가 없습니다. (join할 수가 없으니까, 빈 레코드만 가져오겠죠..)

    >

    > 제가 원하는 것은 A테이블의 c1필드에 값이 없다하더라도 b1필드에는 값이 있으니까 B테이블의 b2필드의 값은 가져와야 한다는 겁니다.(아래그림처럼요)

    > ----------------------

    > a1 b2 c2

    > ----------------------

    > '가' '나1' null

    > ----------------------

    >

    > 그러니까 여러 테이블끼리 join할 때 하나라도 join할 필드에 값이 없으면 데이타를 select해 올수가 없는게 당연하겠죠.

    > 그런데 저는 join할 필드에 값이 있는 것만 조인해서 가져오고 join할 필드에 값이 없으면 그냥 그 필드에는 null값이 나오도록 하려는 겁니다.

    > 제 질문이 너무 어렵나요? ^.^;

    > 꼭 구해야 하는데.. 너무 답답하네요.

    > 답변을 부탁드립니다.

    >

    > 읽어주셔서 감사합니다. ^.^

    >



  • Profile
    유수 1999.08.14 05:08


    안녕하세요.

    제가 SQL에 대한 지식이 얕아서 정확한 답변을 드릴 수는 없지만,

    주영님께서 말씀해 주신 것은 외부조인(outter join)에 관한 것 같습니다.

    필드값이 없는 경우 NULL값으로 값을 가져오는 조인인데,

    정확한 문법이 기억이 안나는군요. 죄송..

    혹시 SQL서적이 있으시면, 그 부분을 찾아 보시기 바랍니다.

    시원한 답변 드리지 못해 죄송해여..





    정주영 께서 말씀하시기를...

    > 안녕하십니까?

    > 제가 생각하는 내용이 SQL문으로 가능한지 알고 싶습니다.

    > 그러니까...

    > 테이블이 A, B, C가 있습니다.

    > 테이블의 각각의 필드는 아래와 같습니다.

    > ---------------------------------

    > A B C

    > ---------------------------------

    > 필드/값 필드/값 필드/값

    > ---------------------------------

    > a1/'가' b1/'나' c1/'다'

    > b1/'나' b2/'나1' c2/'다1'

    > c1/'다' b3/'나2' c3/'다2'

    >

    > 제가 만약 테이블A,B,C를 조인해서 a1,b2,c2필드의 값을 구하고 싶다면

    > 아래와 같이 SQL문을 작성하면 되겠죠.

    >

    > Select a1, b2, c3

    > From A, B, C

    > Where A.b1 = B.b1 and A.c1 = C.c1

    >

    > 그런데 만약, A테이블의 c1필드에 값이 없다면('다'라는 값이 없다면)

    > 위와 같은 SQL문으로 조인해서 Select를 하면 아무 값도 가져올 수가 없습니다. (join할 수가 없으니까, 빈 레코드만 가져오겠죠..)

    >

    > 제가 원하는 것은 A테이블의 c1필드에 값이 없다하더라도 b1필드에는 값이 있으니까 B테이블의 b2필드의 값은 가져와야 한다는 겁니다.(아래그림처럼요)

    > ----------------------

    > a1 b2 c2

    > ----------------------

    > '가' '나1' null

    > ----------------------

    >

    > 그러니까 여러 테이블끼리 join할 때 하나라도 join할 필드에 값이 없으면 데이타를 select해 올수가 없는게 당연하겠죠.

    > 그런데 저는 join할 필드에 값이 있는 것만 조인해서 가져오고 join할 필드에 값이 없으면 그냥 그 필드에는 null값이 나오도록 하려는 겁니다.

    > 제 질문이 너무 어렵나요? ^.^;

    > 꼭 구해야 하는데.. 너무 답답하네요.

    > 답변을 부탁드립니다.

    >

    > 읽어주셔서 감사합니다. ^.^

    >