테이블이 3가잇는데요 조인을 하니까 중복된 데이타가 나와서 질문드립니다
A TABLE
------------------------------
pk_id | name | age
1 aaa 45
2 bbb 29
3 ccc 37
B Table
=======================
PK_ID | A_PK_ID
1 3
2 2
3 3
4 1
5 2
C Table
============================
PK_D | B_PK_ID | kwamok | jumsu
1 1 자연 23
2 2 과학 85
3 3 사회 87
4 3 역사 100
5 4 물리 100
6 5 수학 50
위 테이블을 조인해서 A TABle 의 데이타를 기준으로 하나씩만 조회(3개)가 되어야 되는데 여러개가 조회가 되어서 질문드립니다
Comment 4
-
이리
2016.09.13 10:15
-
문상연
2016.09.13 10:38
select * from a
left join b on a.pk_id = b.a_pk_id
left join c on b.pk_id = c_b_pk_ID
이렇게 하니까 데이타가 여러개가 나오더라구요
-
Terry
2016.09.13 11:40
3개만 나오는 형태가 아니죠..
간단히 a,b 테이블만 비교해볼께요..
a테이블의 pkid -> 1,2,3
b테이블 a_pkid -> 3,2,3,1,2
이것만 보더라도..
1 aaa 45 4 1
2 bbb 29 2 2
2 bbb 29 5 2
3 ccc 37 1 3
3 ccc 37 3 3상기와 같은 5개의 row로 select 결과가 나오겠죠..
테이블의 설계가 잘못된게 아닐까 한데요..
과목 <-> 학생 <-> 점수
3개의 테이블로 되어있어야 맞지 않을까 싶네요..
(정답은 없고 제 기준입니다..-.-...)
하기 쿼리 참고만 하세요..
---쿼리시작---
;with 학생(id,name,age) As
(
Select 1,'aaa',45 Union All
Select 2,'bbb',29 Union All
Select 3,'ccc',37
)
,과목(id,kwamok) As
(
Select 1,'자연' Union All
Select 2,'과학' Union All
Select 3,'사회' Union All
Select 4,'역사' Union All
Select 5,'물리' Union All
Select 6,'수학'
)
,점수(kwamok_id,student_id,jumsu) As
(
Select 1,1,19 Union All
Select 2,1,29 Union All
Select 3,1,39 Union All
Select 4,1,49 Union All
Select 5,1,59 Union All
Select 6,1,69 Union All
Select 1,2,17 Union All
Select 2,2,27 Union All
Select 3,2,37 Union All
Select 4,2,47 Union All
Select 5,2,57 Union All
Select 6,2,67 Union All
Select 1,2,15 Union All
Select 2,2,25 Union All
Select 3,2,35 Union All
Select 4,2,45 Union All
Select 5,2,55 Union All
Select 6,2,65
)
Select b.kwamok
,c.name
,a.jumsu
From 점수 a
Inner Join
과목 b
On a.kwamok_id = b.id
Inner Join
학생 c
On a.student_id = c.id
---쿼리끝--- -
문상연
2016.09.13 15:42
제가 정신이 없어서 지금 봤습니다
고맙습니다
즐거운 추석 잘보내세요
조인을 어떻게 했고 어떤 결과가 나왔나요?