2012-06-25 3 views
0

두 개의 열과 둘 다 tblPackage.ID를 가리키는 외래 키가있는 테이블 tblNoComp가 있습니다. tblNoComp의 목적은 해당 패키지의 ID를 OneIDTwoID의 두 열에 저장하기 만하면 서로 호환되지 않는 패키지를 저장하는 것입니다.뷰 만들기 : 단일 테이블에 대한 여러 개의 외래 키 관계

이 패키지를 저장하는 가장 좋은 방법은 아니지만 여러 패키지가 다른 패키지와 호환되지 않기 때문에 가장 논리적 인 것으로 보입니다. 나란히 두 측면에 대한 tblPackage.Name을 표시하는보기를 만들려고

- 나는 다음이 있지만 TwoID 패키지 이름을 얻는 방법을 모르는 ..

tblNoComp을 선택합니다. OneID, tblPackages. Package, tblNoComp. TwoID, tblPackages. tblNoComp FROM Package , tblPackages WHERE (tblNoComp. OneID = tblPackages. PID) 현재

tblPackages

. Package은 TwoID가 아닌 OneID 이름 만 표시하고 있습니다. 해결 방법을 모르십니까?

감사합니다.

- 간단한 질문 인 경우, 한 시간 동안 검색했지만 내 문제를 올바르게 설명하지 못했습니다.

+0

[가능한 동일한 테이블에 가입 하시겠습니까, 두 번, mysql에 가입 할 수 있습니까?] (http://stackoverflow.com/questions/199953/how-do-you-join-on-the-same-table -twice-in-mysql) – David

+0

요약을 제공하려면 기본적으로 쿼리에서 조인 된 테이블을 "별칭"하여 두 개의 이름 (두 개의 키)으로 두 번 조인 할 수 있어야합니다. 기본적으로 동일한 테이블을 두 개의 개별 조인 된 테이블로 취급합니다. – David

+0

유용한 정보 : http://stackoverflow.com/q/3201359/328193 및 http://stackoverflow.com/q/7515202/328193 및 http://forums.mysql.com/read.php?10,190885 – David

답변

0

당신은 당신의 코멘트에있는 코드 :

SELECT 
    tblNoComp.OneID, 
    tblPackages.Package AS OneIDPackageName, 
    tblNoComp.TwoID, 
    tblPackages.Package AS TwoIDPackageName 
FROM 
    tblNoComp 
    LEFT JOIN tblPackages 
    ON tblNoComp.OneID = tblPackages.PID 

이 테이블 대신 열 별명이다. 앨리어싱 뒤에있는 아이디어는 두 개의 서로 다른 별칭을 사용하여 같은 테이블을 두 개의 다른 테이블로 두 번 두 번 더합니다. 한 번만 참여하면 두 번 사용하려고합니다. 이상과 같이

당신 아마 의도 뭔가 :

SELECT 
    tblNoComp.OneID, 
    tblOnePackages.Package AS OneIDPackageName, 
    tblNoComp.TwoID, 
    tblTwoPackages.Package AS TwoIDPackageName 
FROM 
    tblNoComp 
    LEFT JOIN tblPackages AS tblOnePackages 
    ON tblNoComp.OneID = tblOnePackages.PID 
    LEFT JOIN tblPackages AS tblTwoPackages 
    ON tblNoComp.TwoID = tblTwoPackages.PID 

(나는 MySQL의 문법 검사기 편리 필요는 없습니다, 그래서이 제대로 실행하기 위해 불통해야 할 수도 있습니다.)

동일한 테이블이 두 개의 서로 다른 키에서 두 번 결합되고 다른 별칭이 부여 될 때마다 SELECT 절 내에서 두 개의 별도 테이블로 참조 될 수 있다는 점에 유의하십시오.

+0

놀라운 ON tblPackages 가입 - 그것은 완벽하게 작동합니다. 이 두 별칭을 정의한 곳을 보니 이제 더 자세히 공부해야 할 것입니다. 정말 고마워. – lieb39

관련 문제