Q&A

  • 쿼리문장...
사용환경 : delphi 5, win98 se, Access



안녕하세요.. 쿼리문을 사용하려는데 애로사항이 있어서 질문을 올립니다.



A table

B table => 코드값 참조 테이블

C table => 코드값 참조 테이블



이렇게 table이 있습니다.

B, C table은 리스트 코드입니다. 그냥 값만 불러와서 참조하는거구요..



만일 A테이블에서 '01'이면

'B테이블'에서 코드를 참조해서 코드값을 저장을 했구요.

A테이블에서 '02'면

'C테이블'에서 코드를 참조해서 코드값을 했습니다.





근데 이것을 select할때가 문제가 되네요..

그냥 부르니깐..

A테이블에서 필드의 값이 '01' 이든 '02'이든 B테이블을 참조합니다.. -_-;

조건을 주어서 어떻게 해야할것 같은데..



'01'일때 B테이블을 참조해서 값을 보여주고, '02'일때 C테이블을 참조해서 값을

보여줘야하는데...



=SQL문장=

select A.id, A.no,

A.class, B.name as BAG,

A.class1, C.name as BAG1-1,

from SHIN as A, SHIN1 as B, SHIN1-1 as C

where B.code=(A.class) and B.code=(A.class1)

union

select A.id, A.no,

A.class, B.name as BAG,

A.class1, C.name as BAG1-1,

from SHIN as A, SHIN1 as B, SHIN1-2 as C

where B.code=(A.class) and B.code=(A.class1)

order by 1



이렇게 하니 값이 야시꾸리하게 나오더군요..

어떻게 해야 할까요?



2  COMMENTS
  • Profile
    coolling 2001.09.28 21:14
    acess db는 사용해보자 않아서 잘모르겠지만,

    쿼리상에서 where절에 테이블 조인 문장에 문제가 있을것 같은데요..

    정확한 필드명과 원하시는 자료를 몰라서 질문하신 쿼리로 대충 만들어 봤습니다.

    요점은 union을 사용하실거라면

    Table A의 코드가 '01'인경우와 '02'인경우로 나눠서

    '01'인 경우에는

    B Table하고 이퀄조인을 하시고

    '02'인 경우에는

    C Table하고 이퀄조인을 하시면 될것 같네요..



    select a.id, a.no, a.class, b.name as bag

    from shin as a, shin1 as b

    where a.code = '01'

    and a.class = b.code

    union

    select a.id, a.no, a.class, c.name

    from shin as a, shin1-2 as c

    where a.code = '02'

    and a.class = c.code



    도움이 되었기를....



    강석찬 wrote:

    > 사용환경 : delphi 5, win98 se, Access

    >

    > 안녕하세요.. 쿼리문을 사용하려는데 애로사항이 있어서 질문을 올립니다.

    >

    > A table

    > B table => 코드값 참조 테이블

    > C table => 코드값 참조 테이블

    >

    > 이렇게 table이 있습니다.

    > B, C table은 리스트 코드입니다. 그냥 값만 불러와서 참조하는거구요..

    >

    > 만일 A테이블에서 '01'이면

    > 'B테이블'에서 코드를 참조해서 코드값을 저장을 했구요.

    > A테이블에서 '02'면

    > 'C테이블'에서 코드를 참조해서 코드값을 했습니다.

    >

    >

    > 근데 이것을 select할때가 문제가 되네요..

    > 그냥 부르니깐..

    > A테이블에서 필드의 값이 '01' 이든 '02'이든 B테이블을 참조합니다.. -_-;

    > 조건을 주어서 어떻게 해야할것 같은데..

    >

    > '01'일때 B테이블을 참조해서 값을 보여주고, '02'일때 C테이블을 참조해서 값을

    > 보여줘야하는데...

    >

    > =SQL문장=

    > select A.id, A.no,

    > A.class, B.name as BAG,

    > A.class1, C.name as BAG1-1,

    > from SHIN as A, SHIN1 as B, SHIN1-1 as C

    > where B.code=(A.class) and B.code=(A.class1)

    > union

    > select A.id, A.no,

    > A.class, B.name as BAG,

    > A.class1, C.name as BAG1-1,

    > from SHIN as A, SHIN1 as B, SHIN1-2 as C

    > where B.code=(A.class) and B.code=(A.class1)

    > order by 1

    >

    > 이렇게 하니 값이 야시꾸리하게 나오더군요..

    > 어떻게 해야 할까요?

    >

  • Profile
    강석찬 2001.09.29 00:19
    답변 감사합니다..

    이모저모 요리조리 따져본 결과..

    조건을 하나 빼먹었더군요..

    음냐..



    즐거운 한가위가 되시길.. (__)



    coolling wrote:

    > acess db는 사용해보자 않아서 잘모르겠지만,

    > 쿼리상에서 where절에 테이블 조인 문장에 문제가 있을것 같은데요..

    > 정확한 필드명과 원하시는 자료를 몰라서 질문하신 쿼리로 대충 만들어 봤습니다.

    > 요점은 union을 사용하실거라면

    > Table A의 코드가 '01'인경우와 '02'인경우로 나눠서

    > '01'인 경우에는

    > B Table하고 이퀄조인을 하시고

    > '02'인 경우에는

    > C Table하고 이퀄조인을 하시면 될것 같네요..

    >

    > select a.id, a.no, a.class, b.name as bag

    > from shin as a, shin1 as b

    > where a.code = '01'

    > and a.class = b.code

    > union

    > select a.id, a.no, a.class, c.name

    > from shin as a, shin1-2 as c

    > where a.code = '02'

    > and a.class = c.code

    >

    > 도움이 되었기를....

    >

    > 강석찬 wrote:

    > > 사용환경 : delphi 5, win98 se, Access

    > >

    > > 안녕하세요.. 쿼리문을 사용하려는데 애로사항이 있어서 질문을 올립니다.

    > >

    > > A table

    > > B table => 코드값 참조 테이블

    > > C table => 코드값 참조 테이블

    > >

    > > 이렇게 table이 있습니다.

    > > B, C table은 리스트 코드입니다. 그냥 값만 불러와서 참조하는거구요..

    > >

    > > 만일 A테이블에서 '01'이면

    > > 'B테이블'에서 코드를 참조해서 코드값을 저장을 했구요.

    > > A테이블에서 '02'면

    > > 'C테이블'에서 코드를 참조해서 코드값을 했습니다.

    > >

    > >

    > > 근데 이것을 select할때가 문제가 되네요..

    > > 그냥 부르니깐..

    > > A테이블에서 필드의 값이 '01' 이든 '02'이든 B테이블을 참조합니다.. -_-;

    > > 조건을 주어서 어떻게 해야할것 같은데..

    > >

    > > '01'일때 B테이블을 참조해서 값을 보여주고, '02'일때 C테이블을 참조해서 값을

    > > 보여줘야하는데...

    > >

    > > =SQL문장=

    > > select A.id, A.no,

    > > A.class, B.name as BAG,

    > > A.class1, C.name as BAG1-1,

    > > from SHIN as A, SHIN1 as B, SHIN1-1 as C

    > > where B.code=(A.class) and B.code=(A.class1)

    > > union

    > > select A.id, A.no,

    > > A.class, B.name as BAG,

    > > A.class1, C.name as BAG1-1,

    > > from SHIN as A, SHIN1 as B, SHIN1-2 as C

    > > where B.code=(A.class) and B.code=(A.class1)

    > > order by 1

    > >

    > > 이렇게 하니 값이 야시꾸리하게 나오더군요..

    > > 어떻게 해야 할까요?

    > >