[SQL] 명시 적 및 암시 조인 혼합은 "이 테이블에 대한 항목은 ...하지만이 쿼리의이 부분에서 참조 할 수 없습니다"와 함께 실패
SQL명시 적 및 암시 조인 혼합은 "이 테이블에 대한 항목은 ...하지만이 쿼리의이 부분에서 참조 할 수 없습니다"와 함께 실패
SELECT
i.*,
r.name AS roomname,
c.name AS cat,
p.key AS imgkey,
p.extension AS imgext
FROM
items i,
rooms r,
categories c
LEFT JOIN photos p
ON p.referencekey = i.key
WHERE
i.room = r.key
AND r.key = 663308
AND i.sitekey = 32201
AND c.key = i.categorykey
실행 반환 오류를 다음 위의 쿼리.
해결법
-
==============================
1.당신의 Items.Room = Rooms.Key 때문에, 난 그냥과 어디 것이다 ..
당신의 Items.Room = Rooms.Key 때문에, 난 그냥과 어디 것이다 ..
SELECT i.*, r.name AS roomname, c.name AS cat, p.key AS imgkey, p.extension AS imgext FROM items i LEFT JOIN photos p ON p.referencekey = i.key JOIN rooms r on i.room = r.key JOIN categories c on i.categorykey = c.key WHERE i.sitekey = 32201 AND i.room = 663308
-
==============================
2.암시 적 조인하기 전에 명시 적 조인하는 SQL 사양 상태가 수행됩니다. 이 암시 가입입니다 :
암시 적 조인하기 전에 명시 적 조인하는 SQL 사양 상태가 수행됩니다. 이 암시 가입입니다 :
FROM table1 t1, table2 t2 WHERE t1.id=t2.t1id
이는 명시 적 조인 :
FROM table1 t1 JOIN table2 t2 ON (t1.id=t2.t1id)
이 코드 비트 :
categories c LEFT JOIN photos p ON p.referencekey = i.key
명시 적 조인 먼저 실행됩니다. 나는 아직 보았다되지 않았기 때문에 아직 가입하지 수 있도록이 시점에서 테이블, 별칭이 있습니다. MySQL은 내가 믿는 5.2에서이 문제를 해결하고, 하나가이 쿼리가 더 이상 작동하지 않습니다.
-
==============================
3.당신이에 합류 테이블 옆에 가입 문을 이동 :
당신이에 합류 테이블 옆에 가입 문을 이동 :
SELECT i.*, r.name AS roomname, c.name AS cat, p.key AS imgkey, p.extension AS imgext FROM items i LEFT JOIN photos p ON p.referencekey = i.key, rooms r, categories c WHERE i.room = r.key AND r.key = 663308 AND i.sitekey = 32201 AND c.key = i.categorykey
긴 설명 :
A는 가입 소스 테이블에서 결과하는 여기서 from_item으로 FROM 절에서 사용 된 표현의 일부분이다. 귀하의 FROM 절은 3 개 여기서 from_item 소스 테이블이 있습니다 :
이 오류는 사진 여기서 from_item에 가입하여 카테고리의 ON join_condition입니다. 당신은 여기서 from_item에 존재하지 않는 테이블 항목을 참조한다. 이 솔루션은 항목이 여기서 from_item에 사진 가입 이동하는 것입니다, 그래서 당신은 다음과 같은 여기서 from_item 소스 테이블을 가지고 :
슬프게도, 나는 차종이 FROM 절에서 테이블 사이의 관계를 지우고가 가입하는 문서에서 예를 찾을 수 없습니다. 선택 시놉시스이 구문을 보여줍니다이 차이를 찾을 수있는 문서에 가장 좋은 소스입니다. A는 가입 통지는 형제 FROM에 절을하지만 FROM 절 내에서 여기서 from_item 실제로 일부가 아닙니다. 당신의 FROM 절은 테이블의 목록으로 구성하는 경우 따라서, 해당 목록의 각 테이블 자체 조인 할 수 있습니다. 그런 다음 각 테이블은 단일 여기서 from_item에 포함되어야 조인에 참여하는 것이 더 직관적된다.
from https://stackoverflow.com/questions/6347897/mixing-explicit-and-implicit-joins-fails-with-there-is-an-entry-for-table-b by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL 주입은 위험이 오늘인가? (0) | 2020.07.01 |
---|---|
[SQL] .NET에서 인 메모리 데이터베이스 [폐쇄] (0) | 2020.07.01 |
[SQL] "LIKE"과의 차이점은 SQL에서 "="는 무엇인가요? (0) | 2020.06.30 |
[SQL] SQL 쿼리에서 기본 값을 반환하는 방법 (0) | 2020.06.30 |
[SQL] 어떻게 열 이름 SqlDataReader.GetValue하여 데이터를 얻을 수 있습니다 (0) | 2020.06.30 |