혹시 a테이블, b테이블 pk값 일치한다면 a테이블 조회값에 b테이블 컬럼값 더해서 select 할수있나요? 없다면 defalut값이든 null이든상관없구요 가르침 부탁드립니다 ㅜ 0 1 1,091

by 신입0년차 [SQL Query] [2019.01.18 17:31:55]


 

예시를 들면

둘다 같은 pk 값이구요

B는 A테이블의 pk5개를 fk 로 가지고있고 즉 B는 A테이블에 종속되며 단지 별명과 좋아하는음식을 저장하기위해 있는테이블입니다.

A테이블 은

첫번째pk 두번째pk 세번째pk 네번째pk 다섯번째pk 이름 주민번호
A1 B1 C1 D1 F1 사나 987654-1695487
A2 B2 C2 D2 F2 모모 987654-1623456

이렇고

B테이블은 

첫번째pk 두번째pk 세번째pk 네번째pk 다섯번째pk 별명 좋아하는음식
A1 B1 C1 D1 F1 햄씨사나 간장게장
A2 B2 C2 D2 F2 모구리 족발

 

이렇다면요 

A테이블 값은 무조건 select 되는데 

B테이블에도 같은 pk값이 있다면

별명과 좋아하는음식을 A테이블의 컬럼값에 추가해서 select 하고 싶거든요

없으면 빈값이나 null 값으로 대체되어 나와도 상관없는데 그런방식이 있을까요?

join으로 하면 있으면 나오지만 없으면 아예 안나와서 .....

outer join으로 하면 pk중복안되면 전부 하얗게 주테이블의 개수만큼 빈칸으로 출력되드라구요 ....

CASE 나 DECODE는 컬럼값에 걸수있는데 A테이블에는 별명과 좋아하는음식 컬럼이 없어서... join하자니 pk값없으면 아예 없어서.. 서브쿼리는 안되는지 오류가 뜨구요

이게 B테이블에 저장되어있으면 되는데 간단히 설명드릴려고 저렇게 설명드렸는데 사실 C랑D테이블 join해서 나온 값들을 처음에 보여주고 사용자가 수정후 B테이블에 저장하면 C,D 테이블 join해서 나온값들이 B테이블에 저장됩니다. join값에 B테이블만에 컬럼 2개도 추가 해서요 A,B,C,D pk는 똑같은 5개에 똑같습니다.

아직 0년차라 모르는게 많아서 검색해가면서 하고있긴한데 너무 오래걸려서요 기한이 있는데 마냥 공부하면서 할수없어서 .. 계속 책읽으며 공부중이긴한데

업무는 기한내에 끝내야하는지라 가르침 부탁드려도 될까요 ? ㅠㅠ

 

by 신입0년차 [2019.01.18 17:53:06]

자체해결했습니다.

주 테이블 출력인데 select에서나오게하는 컬럼명은 종속테이블 컬럼으로 설정해놔서 빈칸으로 출력되던거였습니다.

같은 pk인만큼 별명 설정해서 A.컬럼명 B컬럼명 이런식으로 썻엇는데 D.컬럼명 해야할걸 A.컬럼명 하니 별명이 A인 테이블의 컬럼은 빈값이라 값이없는데 출력해야하는 row수는 주 테이블인 D 테이블 row 개수만큼 출력해야하니 

흰색 빈칸 으로 출력되던 거였습니다.

그렇게 원하던 값 출력과 추가로 A.컬럼 2개를 묶으니 빈값들은 빈칸으로 값있는거는 값대로 나오는걸

DECODE 로 '' 빈값이면 '0' 처리하고 아니면 별명 컬럼값으로 찍히게하니까 원하는대로 조회되네요

나중ㅇ ㅔ 까먹으면 다시볼용으로 놔둘려고하나 삭제 요청하시면 삭제하겠습니다. 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입