다중 부품 식별자를 바인딩할 수 없습니다.
SO에서도 비슷한 에러가 발생하고 있습니다만, 문제의 해결 방법을 찾을 수 없습니다.다음과 같은 SQL 쿼리가 있습니다.
SELECT DISTINCT
a.maxa ,
b.mahuyen ,
a.tenxa ,
b.tenhuyen ,
ISNULL(dkcd.tong, 0) AS tongdkcd
FROM phuongxa a ,
quanhuyen b
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'
AND LEFT(a.maxa, 2) = b.mahuyen
ORDER BY maxa;
이 쿼리를 실행하면 다음 오류가 발생합니다.다중 부품 식별자 "a.maxa"를 바인딩할 수 없습니다. 이유가 무엇입니까?
P/s: 쿼리를 2개의 개별 쿼리로 나누면 정상적으로 실행됩니다.
SELECT DISTINCT
a.maxa ,
b.mahuyen ,
a.tenxa ,
b.tenhuyen
FROM phuongxa a ,
quanhuyen b
WHERE a.maxa <> '99'
AND LEFT(a.maxa, 2) = b.mahuyen
ORDER BY maxa;
그리고.
SELECT maxa ,
COUNT(*) AS tong
FROM khaosat
WHERE CONVERT(DATETIME, ngaylap, 103) BETWEEN 'Sep 1 2011'
AND 'Sep 5 2011'
GROUP BY maxa;
암묵적인 조인과 명시적인 조인을 혼합하고 있습니다.그것은 허용되지만, 당신은 그것을 제대로 하는 방법을 알아야 합니다.
조인(명시적 조인, 즉 명시적 조인( 조인, 즉 명시적 조인, 즉 명시적 조인, 즉 명시적 조인, 즉 명시적 조인, 즉 명시적 조인, 즉 명시적 조인, 즉 명시적 조인, 즉 명시적 조인, 즉 명시적 조인, 즉 명시적 이라고 할 수 있습니다.JOIN
이 '조인'으로보다 됩니다.보다 우선합니다.이치노WHERE
(신호)
다음은 질문의 개요입니다.
SELECT
…
FROM a, b LEFT JOIN dkcd ON …
WHERE …
다음과 같이 동작할 것으로 예상됩니다.
SELECT
…
FROM (a, b) LEFT JOIN dkcd ON …
WHERE …
표의 , 즉 ㄴ, 이, 이, 이, 합, 입, 입, 입, 입, 입, 입의 조합입니다.a
★★★★★★★★★★★★★★★★★」b
되어 있습니다.dkcd
지금 일은
SELECT
…
FROM a, (b LEFT JOIN dkcd ON …)
WHERE …
이미 , ,, 미, 미, 하, 하, that, that, that, that, that, that, that, that that,dkcd
에 반대하여 결합되어 있다b
''만''b
그 후 결합 결과는 다음과 같이 결합됩니다.a
더 을 합니다.WHERE
절을 클릭합니다. 「 」, 「 」에 대한 .a
ON
a
그 시점에서는 알 수 없습니다.그래서 에러 메세지가 표시됩니다.
제가 고객이라면 이 쿼리를 다시 쓰려고 할 것입니다.한 가지 가능한 해결책은 다음과 같습니다.
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
테이블이 있습니다.a
★★★★★★★★★★★★★★★★★」b
되고 그 됩니다.dkcd
이것은 의 쿼리와 중 구문을 은 참조문헌입니다.★★★★a.maxa
dkcd
의 가입조건이 완전히 유효하게 되었습니다.
@지적했듯이, 당신은 아마도 @Aaron Bertrand의 자격을 할 입니다.maxa
에일리어스 「」, 「」)가 있는 경우.a
, 의ORDER BY
절을 클릭합니다.
쿼리에서 스키마(dbo)를 잘못된 방식으로 사용할 경우 이 오류가 발생할 수 있습니다.
예를 들어 다음과 같이 입력합니다.
select dbo.prd.name
from dbo.product prd
에러가 납니다.
이 경우는, 다음과 같이 변경합니다.
select prd.name
from dbo.product prd
별칭 이름을 지정한 경우 실제 이름으로 변경
예를들면
SELECT
A.name,A.date
FROM [LoginInfo].[dbo].[TableA] as A
join
[LoginInfo].[dbo].[TableA] as B
on [LoginInfo].[dbo].[TableA].name=[LoginInfo].[dbo].[TableB].name;
그것을 로 변경하다
SELECT
A.name,A.date
FROM [LoginInfo].[dbo].[TableA] as A
join
[LoginInfo].[dbo].[TableA] as B
on A.name=B.name;
SQL SERVER에서도 같은 에러 메시지에 시달리고 있었습니다.다중 가입이 있었기 때문에 가입 순서를 바꾸면 문제가 해결되었습니다.
나의 경우, 그 문제는 내가 테이블에 붙인 별칭으로 판명되었다.SQL Server에서 "oa"를 사용할 수 없는 것 같습니다.
나에게 효과가 있었던 것은 WHERE 조항을 SELECT 서브쿼리로 변경한 것입니다.
송신원:
DELETE FROM CommentTag WHERE [dbo].CommentTag.NoteId = [dbo].FetchedTagTransferData.IssueId
수신처:
DELETE FROM CommentTag WHERE [dbo].CommentTag.NoteId = (SELECT NoteId FROM FetchedTagTransferData)
JDBC에서도 같은 에러가 발생하고 있었습니다.모든 것을 확인했고 내 질문은 괜찮았다.알고보니, 이 조항에서 나는 논쟁을 벌인다:
where s.some_column = ?
그리고 내가 전달한 논쟁의 가치는 무효였다.이 경우에도 같은 오류가 발생하는데, 이는 오해의 소지가 있습니다. 왜냐하면 인터넷을 검색하면 쿼리 구조에 뭔가 문제가 있지만 제 경우에는 해당되지 않기 때문입니다.누군가 같은 문제에 직면할 것 같아서
SQL은 처음이지만 수강하는 과정에서 이 문제를 발견했는데, 프로젝트에 쿼리를 할당하면 특히 멀티 파트 오류를 제거하는 데 도움이 된다는 것을 알게 되었습니다.예를 들어 제가 만든 프로젝트는 CTU SQL Project이기 때문에 USE [CTU SQL Project]를 첫 번째 행으로 하여 아래와 같이 스크립트를 시작했습니다.
USE [CTU SQL Project]
SELECT Advisors.First_Name, Advisors.Last_Name...and so on.
가 「」에서,UPDATE
을 한 번 확인해 주세요.JOIN
에러의 원인이 되고 있는 열/필드가 있는 테이블에 표시됩니다.
제 경우, 이것은 이 모든 것이 부족했기 때문입니다.JOIN
(Andriy가 지적한 바와 같이) 알 수 없는 필드로 인해 동일한 오류가 발생하였습니다.
대신 이렇게 테이블을 접합해보세요.
select
....
from
dkcd
right join
a
, b
이거면 될 것 같아
SELECT DISTINCT
phuongxa.maxa ,
quanhuyen.mahuyen ,
phuongxa.tenxa ,
quanhuyen.tenhuyen ,
ISNULL(dkcd.tong, 0) AS tongdkcd
FROM phuongxa ,
quanhuyen
LEFT OUTER JOIN ( SELECT khaosat.maxa ,
COUNT(*) AS tong
FROM khaosat
WHERE CONVERT(DATETIME, ngaylap, 103) BETWEEN 'Sep 1 2011'
AND
'Sep 5 2011'
GROUP BY khaosat.maxa
) AS dkcd ON dkcd.maxa = maxa
WHERE phuongxa.maxa <> '99'
AND LEFT(phuongxa.maxa, 2) = quanhuyen.mahuyen
ORDER BY maxa;
저의 실수는 표에 존재하지 않는 필드를 사용한 것입니다.
table1.field1 =>이 존재하지 않습니다.
표2.field1 => 이 맞습니다.
테이블 이름을 수정합니다.
WITH 사용으로 인해 오류가 발생하였습니다.
WITH RCTE AS (
SELECT...
)
SELECT RCTE.Name, ...
FROM
RCTE INNER JOIN Customer
ON RCTE.CustomerID = Customer.ID
다른 테이블과 조합하여 사용할 경우...
테이블에 앉는 걸 잊으셨나요?그렇지 않은 경우 에일리어스를 사용해야 합니다.
저도 이 오류로 인해 고민하다가 답변과 같은 전략을 하게 되었습니다.이것이 효과가 있는 전략임을 확인하기 위해 답변을 첨부합니다.
다음 예제에서는 데이터가 있는 것으로 알고 있는2개의 테이블 간에 첫 번째 내부 조인을 1회 실행하고 다음으로 빈 행이 있는 테이블에서 두 개의 왼쪽 외부 조인을 수행합니다.테이블 간에 기본 쉼표로 구분된 구문을 수행하는 대신 내부 조인과 외부 조인을 혼합하여 테이블 간의 데이터 액세스 결과를 얻을 수 있습니다.
use somedatabase
go
select o.operationid, o.operatingdate, p.pasid, p.name as patientname, o.operationalunitid, f.name as operasjonsprogram, o.theaterid as stueid, t.name as stuenavn, o.status as operasjonsstatus from operation o
inner join patient p on o.operationid = p.operationid
left outer join freshorganizationalunit f on f.freshorganizationalunitid = o.operationalunitid
left outer join theater t on t.theaterid = o.theaterid
where (p.Name like '%Male[0-9]%' or p.Name like '%KFemale [0-9]%')
첫 번째: 데이터 조회가 예상되는 테이블 간의 내부 조인을 수행합니다.두 번째 부분: 외부 조인을 계속하여 다른 테이블 내의 데이터를 가져오지만 테이블 외부 조인에 대응하는 데이터가 없는 경우 또는 에서 설정한 조건과 일치하는 경우 결과 세트가 필터링되지 않습니다.
이 오류는 콤마를 놓치는 것만으로 발생할 수도 있습니다.,
SELECT 문의 열 이름 사이에 있습니다.
예:
SELECT MyCol1, MyCol2 MyCol3 FROM SomeTable;
나에게 문제는 빈 괄호 없이 DB 함수를 호출하는 어리석음이었다.select [apo].[GenerateNationalIdFrance]
대신select [apo].[GenerateNationalIdFrance]()
...그것을 깨닫는 데 몇분이 걸렸지만, 후배들에게 언급할 가치가 있다:-)
나는 잘못된 에일리어스 철자를 사용하고 있었는데, 정확한 철자를 입력한 후에 작동했다.
언급URL : https://stackoverflow.com/questions/7314134/the-multi-part-identifier-could-not-be-bound
'source' 카테고리의 다른 글
서버에 연결할 수 없음 - 네트워크 관련 오류 또는 인스턴스별 오류 (0) | 2023.04.07 |
---|---|
sql 스크립트에서 "기존 연결 닫기"를 지정하려면 어떻게 해야 합니까? (0) | 2023.04.07 |
SQL Server에서 외부 키를 작성하려면 어떻게 해야 합니까? (0) | 2023.04.07 |
SQL Server에서 상수 1 또는 0으로 비트 암시 (0) | 2023.04.07 |
Django 템플릿에서 키로 사전 액세스 (0) | 2023.04.02 |