2014-02-18 3 views
0

우리는 시각적 인 기본으로 프로그램을 만들고 우리는 그리드를 가지고 데이터베이스의 데이터를 보여줍니다. 하지만 이제는 문제가 있습니다. 실제 단어 대신 숫자가 표시됩니다. 이는 약간의 Google로 수정하기 쉽지만 동일한 표에 대한 참조가있는 2 개의 열이 있습니다. 그래서 자세한 내용은, 우리가 참조와 하나 개의 테이블을 가지고, 그것은 이름 v_Transport이며 아이디, relationid, carrierid을 (사람들이 예를 들어 충분한 다음 더 있습니다) 데이터를 다음이visual basic/mysql 데이터 표시

1 | 803 | 503 
2 | 653 | 321 

처럼 보인다입니다 우리는 (사람들은 충분히 다시) ID와 이름과의 관계라는 두 번째 테이블

653 | spike 
321 | google 
803 | stackoverflow 
503 | humbletest 

normaly 내가 할 것 같은 뭔가가

select t.id, r.name 
from transport t, relations r 
where r.id = t.relationid 

하나의 참조가 있었지만 같은 테이블에 2 개가있는 경우이 작업이 가능합니다. 작은 일이라도 내 쿼리를 테스트 할 수 없으므로 작동하지 않거나 작동하지 않는 것이 확실합니다. 하지만 내 질문은 다음에 대한 자세한 정보를 얻을 수있는 소스 코드와 가능한 링크의 설명과 함께

1 | stackoverflow | humbletest 
2 | spike | google 

추천하고 가능하면 올바른 방법을 보여주기 위해 데이터를 얻을 수있는 좋은 방법이 될 것입니다 무슨 이야기.

답변

0

select t.id, r.name relation_name, rc.name carried_name 
from transport t INNER JOIN 
    relations r ON r.id = t.relationid INNER JOIN 
    relations rc ON rc.id = t.carrierid 

에 대해이 소스 테이블이 개 다른 분야에서, 두 번 같은 참조 테이블에 가입 yuo 방법입니다 방법. 모든 참조 ID가 채워지는 경우 모르는 경우

, 당신은 rathet 당신이 원하는 경우에 당신도, 당신이 원하는 것을 표시하기 위해 IFNULL를 사용할 수있는 LEFT JOIN

select t.id, IFNULL(r.name,'NA') relation_name, IFNULL(rc.name,'NA') carried_name 
from transport t LEFT JOIN 
    relations r ON r.id = t.relationid LEFT JOIN 
    relations rc ON rc.id = t.carrierid 

을 사용합니다.

+0

관계가 INNER JOIN 관계 r.id = t.relationid의 r RC = ON rc.id r.carrierid 야해 최종 라인 관계 될 RC = ON rc.id t.carrierid carrierid 수송이기 때문에 ? – knowndead

+0

@knowndead, 맞습니다. 죄송합니다. 나는 지금 그것을 바로 잡았다. –