안녕하세요
쿼리 하나만 질문 좀 드리겠습니다..
다름이 아니라 테이블이 4개가 있습니다.
학생테이블,상담테이블,알선테이블,취업테이블 이렇게 4개의 테이블이 있습니다.
stu_tbl,학생테이블(stu_seq(id),stu_name(이름),stu_num(학번),stu_dept(학과))
sang_tbl,상담테이블(sang_seq(id),stu_seq(id),sang_date(날짜),sang_type(상담방법),sang_memo(내용))
al_tbl,알선테이블(al_seq(id),stu_seq(id),al_date(날짜),al_name(알선회사),al_job(알선직무))
job_tbl,취업테이블(job_seq(id),sang_seq(id),job_date(날짜),job_name(취업회사))
대략적으로 이렇게 구성되어있습니다.
제가 하고 싶은건 학생테이블과 나머지 3개 테이블을 연결해서
이름 학과 학번 상담건수 알선건수 취업건수
김철수 컴공 xxx 4건 3건 1건
유학인 물류 xxx 3건 3건 1건
이런식으로 나오게 하고 싶습니다.
상담테이블,알선테이블,취업테이블에 있는 stu_seq 로 학생테이블과 매칭시켜서 건수를 count하고 싶은데요..
검색을 아무리 해봐도 비슷한 케이스를 찾기가 힘드네요.
최대한 자세히 설명드릴려고 노력했는데, 이해하실수 있으실지 모르겠습니다.
도움을 부탁드립니다.
어떻게 쿼리를 작성해야 할지 알려주시면 감사하겠습니다.
Comment 4
-
처리짱
2014.09.02 17:02
-
송택준
2014.09.02 17:23
select a.stu_name,a.stu_dept,a.stu_num,COUNT(b.sang_seq),COUNT(c.al_seq),COUNT(d.job_seq)
from stu_tbl a left outer join sang_tbl b on a.stu_seq = b.stu_seqleft outer join al_tbl c on a.stu_seq = c.stu_seq
left outer join job_tbl d on a.stu_seq = d.stu_seq
group by a.stu_name,a.stu_dept,a.stu_num
이런식인건가 싶어서 해봤더니 예들들어 김철수 상담건수가 3건이고 알선건수가 4건 취업건수가 1건이면
상담건수와 알선건수 취업건수가 모두12건으로 표시가 되어지네요..
제가 어떤걸 잘못해서 그런걸까요?
-
처리짱
2014.09.02 17:53
select a.stu_name,a.stu_dept,a.stu_num,b.sang_seq,c.al_seq,d.job_seq
from stu_tbl a left outer join (SELECT COUNT(b.sang_seq) FROM sang_tbl GROUP BY stu_seq) on a.stu_seq = b.stu_seq
left outer join (SELECT COUNT(b.sang_seq) FROM al_tbl GROUP BY stu_seq) c on a.stu_seq = c.stu_seq
left outer join (SELECT COUNT(b.sang_seq) FROM job_tbl GROUP BY stu_seq) d on a.stu_seq = d.stu_seqa.stu_seq 가 중복이 없다는 전제조건하에..
이런식이 겠지요??..
성능은 책임 못져요 ;;
-
송택준
2014.09.02 18:19
감사합니다^^ 오타만 수정하니 제가 원하는 결과값이 나오네요
학생테이블 에서 상담테이블, 알선테이블, 취업테이블을 LEFT JOIN으로 붙혀 나가시면 될듯요..