[SQL] 이유는 무엇입니까이 SQL 코드를주고 오류 1066 (안 독특한 테이블 / 별칭 : '사용자')?
SQL이유는 무엇입니까이 SQL 코드를주고 오류 1066 (안 독특한 테이블 / 별칭 : '사용자')?
이것은 내 테이블 구조입니다 :
오류 메시지는 다음과 같습니다
다음은 내 코드입니다.
SELECT article.* , section.title, category.title, user.name, user.name
FROM article
INNER JOIN section ON article.section_id = section.id
INNER JOIN category ON article.category_id = category.id
INNER JOIN user ON article.author_id = user.id
LEFT JOIN user ON article.modified_by = user.id
WHERE article.id = '1'
해결법
-
==============================
1.당신은 별칭을 사용자 테이블에게 당신이 그것에 가입 번째 시간을 줄 필요가
당신은 별칭을 사용자 테이블에게 당신이 그것에 가입 번째 시간을 줄 필요가
EG
SELECT article . * , section.title, category.title, user.name, u2.name FROM article INNER JOIN section ON article.section_id = section.id INNER JOIN category ON article.category_id = category.id INNER JOIN user ON article.author_id = user.id LEFT JOIN user u2 ON article.modified_by = u2.id WHERE article.id = '1'
-
==============================
2.당신이 있기 때문에 귀하의 오류는 다음과 같습니다
당신이 있기 때문에 귀하의 오류는 다음과 같습니다
JOIN user ON article.author_id = user.id LEFT JOIN user ON article.modified_by = user.id
당신은 같은 테이블의 두 인스턴스를 가지고 있지만, 데이터베이스는 어떤 확인할 수 없습니다. 이 문제를 해결하려면, 당신은 테이블 별칭을 사용해야합니다 :
JOIN USER u ON article.author_id = u.id LEFT JOIN USER u2 ON article.modified_by = u2.id
그것은 당신이하지 않는 전체 테이블 이름 당신이이 같은 상황이없는 모든 시간을 기록처럼, 당신의 테이블 별명을 항상에 좋은 습관입니다.
주소 다음 문제가 될 것입니다 :
SELECT article.* , section.title, category.title, user.name, user.name
1) * SELECT를 사용하지 마십시오 - 항상 전체 테이블 경우에도, 당신이 원하는 열을 밖으로 철자. 이유를 이해하기 위해 SO 질문을 읽어보십시오.
2) 다시, 데이터베이스에서 데이터를 가져있는 테이블 예를 알 수 없기 때문에 user.name 컬럼에 관한 모호한 열 오류를 얻을 수 있습니다. 테이블 별칭을 사용하여 문제를 해결합니다
SELECT article.* , section.title, category.title, u.name, u2.name
-
==============================
3.당신은 당신의 FROM 절에 두 번 "사용자"를 언급했다. 당신은 각 사용자에 대한 언급 때문에 적어도 하나의 언급에 테이블 별칭을 제공해야합니다. 하나 또는 다른 인스턴스에 고정 할 수 있습니다 :
당신은 당신의 FROM 절에 두 번 "사용자"를 언급했다. 당신은 각 사용자에 대한 언급 때문에 적어도 하나의 언급에 테이블 별칭을 제공해야합니다. 하나 또는 다른 인스턴스에 고정 할 수 있습니다 :
FROM article INNER JOIN section ON article.section_id = section.id INNER JOIN category ON article.category_id = category.id INNER JOIN user **AS user1** ON article.author\_id = **user1**.id LEFT JOIN user **AS user2** ON article.modified\_by = **user2**.id WHERE article.id = '1'
(당신은 뭔가 다른이 필요할 수 있습니다 - 나는 사용자가 SQL 엔진이 추측 할 수없는 어떤하지만, 어떤 추측.)
또한, 어쩌면 당신은 하나의 "사용자"를 필요로했다. 누가 알아?
-
==============================
4.
SELECT art.* , sec.section.title, cat.title, use1.name, use2.name as modifiedby FROM article art INNER JOIN section sec ON art.section_id = sec.section.id INNER JOIN category cat ON art.category_id = cat.id INNER JOIN user use1 ON art.author_id = use1.id LEFT JOIN user use2 ON art.modified_by = use2.id WHERE art.id = '1';
이 세력 도움말을 희망
from https://stackoverflow.com/questions/1435177/why-does-this-sql-code-give-error-1066-not-unique-table-alias-user by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 트리거는 SQL 영향을받는 테이블이 로그 만들기를? (0) | 2020.04.05 |
---|---|
[SQL] BigQuery에 열로 트랜스 행 (피벗 구현) (0) | 2020.04.05 |
[SQL] 테이블 필드는 하이픈을 포함 할 수 있습니까? (0) | 2020.04.05 |
[SQL] 뷰에서 사용 변경 PostgreSQL의 열 (0) | 2020.04.05 |
[SQL] SQL 쿼리에 대한 피벗 CASE WHEN를 사용하여 열을 (0) | 2020.04.05 |