2011-05-07 2 views
1

나는 두 개의 테이블이 있습니다SQL 간단한 3 테이블 조인 같은 테이블을 사용하여?

표 1
아이디, 이름 1

표 2
ID, name2a, name2b

표 2의 열 이름 name2a, 그리고 name2b가에 대한 참조 테이블 1의 ID. 나는에 따라 표 1에서 이름을 모두 끌어 쿼리를 작성해야 표 하나가 포함 된 경우, 2.

따라서 표에 사용 된 ID의 :

1 Peter 
2 Paul 

를 표 2에 포함 :

1 1 2 
2 2 2 

다음 select 문은 저를 주어야한다 : 나는 벤드 주위에 갔어요

Peter Paul 
Paul Paul 

생 구축을 위해 노력 s의 SQL과 내가 생각한 최고는 다음과 같습니다.

SELECT table1.name AS 'name', table1.name AS 'Other name' 
FROM table1, table2 
WHERE table1.id = table2.name2a 

정확하게 저에게 name2a 열만 올바르게 부여됩니다.

도움을 주셨습니다. 나는 참여를해야한다고 생각하지만, 정말 고민 중입니다 ...

답변

1

INNER JOIN을 사용해 보았습니까?

SELECT table1.name AS '이름', table1.name AS '다른 이름' FROM table1 INNER JOIN table2 ON table1.id = table2.name2a;

만약 내가 도움이된다면 죄송합니다. SQL에서는 그다지 도움이되지 않습니다.

+1

여기에 와서 다른 사람들로부터 배우는 것은 복잡한 쿼리를 배우고 테이블 간의 더 나은 관계를 이해하는 좋은 방법입니다. – DRapp

2
 select foo.*, t1.x, t2.y 
    join t1 on t1.id = foo.a 
    join t1 as t2 on t2.id = foo.b 

col a 또는 col b가 null 일 가능성이있는 경우 왼쪽 결합을 사용하십시오.

1

table1을 두 번 참조해야합니다. 한 번에 일반 table1.name을 입력하고 다시 table2을 가리키는 부분을 찾아야합니다. 당신의 두번째 테이블

SELECT t1.name1, o.name1 
FROM table1 t1 
JOIN table2 t2 ON t1.id  = t2.name2a 
JOIN table1 o ON t2.name2b = o.id -- And JOIN back to table1 to get the name1 
5

시작과 표 1을 두 번 (각각 다른 별칭)에 가입 한 후 각 별칭 표 항목에서 이름 필드를 얻을 : 당신이 그들에게 별칭을주는 경우는 여러 번에 하나의 테이블에 가입 할 수 있습니다.

select 
     T2.ID, 
     TJ1.Name1 as FirstName, 
     TJ2.Name1 as SecondName 
    from 
     Table2 t2 
     join Table1 TJ1 
      on t2.Name2a = TJ1.ID 
     join Table1 TJ2 
      on t2.Name2b = TJ2.ID 
관련 문제