SQL 오류 "멀티파트 식별자 'a.maxa'를 바인딩할 수 없습니다."에 대한 종합 분석 및 해결
SQL 쿼리에서 "다중 부분 식별자 'a.maxa'를 바인딩할 수 없습니다." 오류는 일반적으로 암시적 조인과 명시적 조인 간의 충돌로 인해 발생합니다. 이 오류를 방지하려면 이 두 가지 연결 유형의 우선순위와 동작을 이해하는 것이 중요합니다.
암시적 조인(쉼표 조인)은 WHERE 절에 조인 조건을 지정합니다. 명시적 조인(JOIN 키워드 사용)은 암시적 조인보다 우선합니다.
주어진 쿼리에서 문제는 phuongxa
(a)와 quanhuyen
(b) 사이의 암시적 조인과 khaosat
(dkcd)를 b와 명시적으로 조인하는 것입니다. 쿼리에서는 dkcd를 사용하여 a와 b를 조인할 것으로 예상하지만 실제로 조인은 b와 dkcd 사이에서 먼저 발생합니다. 이 시점에서 a가 아직 dkcd에 조인되지 않았기 때문에 이로 인해 dkcd 조인 조건의 a.maxa
에 대한 참조가 유효하지 않게 됩니다.
이 오류를 해결하려면 모든 명시적 조인을 사용하여 쿼리를 다시 작성하는 것이 좋습니다. 예:
<code class="language-sql">SELECT DISTINCT a.maxa, b.mahuyen, a.tenxa, b.tenhuyen, ISNULL(dkcd.tong, 0) AS tongdkcd FROM phuongxa a INNER JOIN quanhuyen b ON LEFT(a.maxa, 2) = b.mahuyen LEFT OUTER JOIN ( SELECT maxa, COUNT(*) AS tong FROM khaosat WHERE CONVERT(datetime, ngaylap, 103) BETWEEN 'Sep 1 2011' AND 'Sep 5 2011' GROUP BY maxa ) AS dkcd ON dkcd.maxa = a.maxa WHERE a.maxa <> '99' ORDER BY a.maxa</code>
이 쿼리는 세 테이블 모두에 대해 명시적 조인을 사용하여 필요한 조인 순서를 보장합니다. 또한 ORDER BY
절에 별칭 a를 사용하여 maxa
를 한정하여 정렬의 기반이 되는 테이블의 필드를 명시적으로 지정했습니다.
이러한 오류를 해결하고 효율적인 SQL 쿼리를 작성하려면 명시적 및 암시적 조인의 동작을 이해하는 것이 중요합니다.
위 내용은 내 SQL 쿼리가 '다중 부분 식별자 'a.maxa'를 바인딩할 수 없습니다'를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!