보인다. 각 참조는 외래 키 열 중 하나를 사용하여 조인됩니다. 예를 들어
:
SELECT o.objID AS `ID`
, d.description AS `Description`
, l.description AS `Location`
FROM Object o
JOIN Description d
ON d.descID = o.objDescID
JOIN Description l
ON l.descID = o.objLocID
우리는 우리의
Description
가치를 소스로 짧은 별칭
d
을 할당합니다.
짧은 별칭 l
을 소스에 할당하면 Location
값이 나타납니다.
테이블 이름 대신 짧은 별칭을 사용하여 각 테이블의 열을 참조합니다.
기본적으로 실제로 동일한 테이블 일지라도 두 개의 다른 테이블처럼 Description
테이블에 대한 참조를 생각해보십시오.
설명에 대한 참조 중 하나 이상에 별칭을 지정해야합니다. 따라서 별표를 구분할 수 있습니다. (그렇지 않으면, MySQL은 우리가 우리가 Description.description
말했다 경우에 대해 얘기하고 어느 알 수 없습니다.) 외래 키 열 objDescID
또는 objLocID
이 NULL 값을 갖는 경우, 또는 일치하는 값이 존재하지 않는
주 참조 된 테이블에서 쿼리는 Object에서 행을 반환하지 않습니다.
일치하는 값을 찾을 수없는 경우에도 개체에서 행을 가져 오려면 키워드를 포함하여 OUTER
조인 작업을 사용할 수 있습니다.
예를 들어
: 하나의 별명이 실제로 필요
SELECT o.objID AS `ID`
, d.description AS `Description`
, l.description AS `Location`
FROM Object o
LEFT
JOIN Description d
ON d.descID = o.objDescID
LEFT
JOIN Description l
ON l.descID = o.objLocID
참고,하지만 난 쿼리의 모든 행 소스에 짧은 별칭을 할당하는 경향이있다. 이것은 문장을 더 잘 해석 할 수있게 해 주며, 이미 사용 된 테이블에 또 다른 참조를 추가해야하거나, 테이블 이름 중 하나를 다른 테이블 이름이나 인라인 뷰 (또는 하위 쿼리)로 바꿔야 할 경우 정말로 도움이됩니다. 별칭을 그대로두고 행 소스 만 변경할 수 있습니다. 다른 별칭은 명령문의 실제 실행에 어떤 차이도 만들지 않습니다. 더 복잡한 쿼리에 대해 수행하는 간단한 쿼리에 대해 동일한 패턴을 따르기 때문에 바로 별개입니다.
이 작동하지 않습니까? 약간의 오류? –
마지막 'AND' 절을 수정해야합니다. – SoulTrain
Joe Meyer가 올바른 방향으로 여러분을 지적했습니다. 그의 대답은 본질적으로 내 것과 같습니다. Description 테이블에 ** 두 개의 별도 참조가 필요합니다. lookup objDesc에 대한 참조 하나, objLoc을 조회 할 다른 하나. Description 테이블에 대한 참조 중 하나에 별칭을 사용하여 별표를 구분해야하는 경우입니다. – spencer7593