sql join 질문 드립니다.
본문
안녕하세요 테이블 조인후 검색하여 노출해야하는데 도움이 필요하여 질문드립니다.
"A" TABLE
NO | ID | NAME | AGE | SEX | TEL |
1 | id1 | 일번 | 18 | 여 | 1234-5678 |
2 | id2 | 이번 | 15 | 남 | 8978-5687 |
"B" TABLE
NO | ID | NAME | AGE | SEX | TEL |
1 | id1 | 하나 | 35 | 남 | 1234-5678 |
2 | id2 | 두울 | 35 | 남 | 8978-5687 |
3 | id3 | 세엣 | 45 | 여 | 7987-4544 |
위처럼 두개의 테이블이 있는데요
"A" table과 "B" table의 ID 가 같은 내용이 있을수도 있고
"A" table에없는 데이터가 "B" table에는 있을수 있습니다.
이럴때 id1 을 검색을 하면 "A" table의 내용이 검색이 되고
id3 을 검색하면 "A" table에는 없으니 "B" table의 내용이 나오도록 하고 싶은데요
이럴경우 어떻게 조인을 하여 노출해야하는지 궁금합니다.
결론적으로 두테이블을 조인하여 보여주는데
A table의 내용이 우선적으로 보여주지만 내용이 없을경우 B table 의 내용을 보여주고 싶습니다.
그누보드로 제작중입니다.
선배님들 도와주세요...
답변 1
안녕하세여, 지나가던 개발자입니다.
계속 지나가겠...이 아니구.
테이블 보자마자 드는 생각이, 같은 내용들이 담긴 테이블이 왜 두개인지 궁금했습니다.
보통 같은 내용들이 담긴하면 마스터테이블을 두고, 슬레이브 테이블을 두어서 운영을 하는 방법도 있습니다.
뭐... 그렇다고 잘못되었다고 말씀드리는게 아니고.. 그냥 갑자기 음? 뭐지? 싶었던게 다구요.
그리고 데이터 노출 기준은 A를 기준으로 생각하셔서, 간과하시는 부분이 조인의 기준은 B로 해야 됩니다. 즉,
select * from B left join A
이런식으루요, 그런데 A의 데이터가 있을 경우 A를 출력하시고 싶으시다고 했으니
left join 전제 조건에 case when then 문장을 써서, flag를 달으신 후에
출력하실때 flag값 유무를 판단하셔서 제어하시면 될 것 같습니다.
혹 코드 짜보시고 모르시면 댓글 달아주세요