깽쟈
491
2015-07-04 11:55:52
5
2121

DB join 하려고 하는데, 두 테이블의 값과 칼럼을 하나로 합치고 싶을 때...


안녕하세요. 독학 1인 개발자라 주변에 멘토가 없어 이렇게 질문 올립니다.



scene 테이블입니다. no는 auto_increment, pk이고, history_order는 작성하는 순서대로 번호가 매겨진다고 보시면 되겠습니다.



question 테이블입니다. no는 역시 auto_increment, pk이고, scene.history_order와 마찬가지의 역할을 하는 칼럼이 있습니다. scene_no는 scene 테이블의 no를 참조하는 외래키입니다.


두 테이블의 history_order를 기준으로 join을 하고 싶습니다. 두 테이블의 같은 칼럼을 어떻게 합쳐야 할 지 기초가 부족하여 잘 모르겠습니다. 제가 원하는 결과는 다음과 같습니다.



아래는 실패한 query입니다. (history_order) 부분 처리를 어떻게 해야할지 모르겠습니다.


SELECT s.name, (history_order), q.content

FROM scene AS s, question AS q

WHERE s.no=q.scene_no

ORDER BY (history_order)


만약, 위의 테이블 join이 원래 불가능한 것이라면, 테이블 구성에 대한 조언이라도 얻고 싶습니다.


감사합니다. 꾸벅 (__)

0
  • 답변 5

  • 복실복실피즈
    845
    2015-07-04 12:50:01
    어떤 결과값을 얻고자 하는지부터 말씀을 해주셔야...
  • 깽쟈
    491
    2015-07-04 13:02:48
    history 테이블의 결과를 원합니다.
  • love01191343213
    79
    2015-07-04 13:11:58
    SELECT s.name
         , CASE WHEN q.scene_no IS NULL THEN s.history_order ELSE q.history_order END as history_order
         , q.content
    FROM scene AS s
    LEFT OUTER JOIN question AS q
                 ON s.no=q.scene_no
    ORDER BY ( CASE WHEN q.scene_no IS NULL THEN s.history_order ELSE q.history_order END )

    테스트는 안해봤네요..
  • 깽쟈
    491
    2015-07-04 15:36:11
    답변 감사합니다. 위 내용을 응용해서 다른 문제도 해결하려 하는데 잘 안되네요. 다른 질문도 도움주시면 감사하겠습니다.
  • love01191343213
    79
    2015-07-04 17:12:03

    이제 보니, 이쿼리는 JOIN으로는 불가하고,  UNION 으로 해결하셔야 할 듯 하네요.

    이 결과물은 두 테이블의 합집합이기 때문입니다..

  • 로그인을 하시면 답변을 등록할 수 있습니다.