튜토리얼을 진행 중인데 왜 내 쿼리가 작동하지 않는지 이해할 수 없습니다.
2 개의 테이블이 있습니다.
authors
신분증 | 이름 |
---|---|
1 | 조앤 롤링 |
2 | 스티븐 킹 |
삼 | 아가타 크리스티 |
4 | 닥터 수스 |
books
신분증 | 표제 | author_id |
---|---|---|
1 | 비밀의 방 | 1 |
2 | 아즈카반의 죄수 | 1 |
삼 | 다크 타워 | 2 |
4 | 링크에서 살인 | 삼 |
5 | 스타일에 대한 애정 | 삼 |
6 | 모자에있는 고양이 | 4 |
작업은 저자의 이름과 그들이 저작 한 책의 수를 인쇄하는 쿼리를 작성하는 것이 었습니다.
내 솔루션은 다음과 같습니다.
SELECT name, COUNT(*)
FROM books
JOIN authors ON books.author_id = authors.id
GROUP BY author_id
그러나 결과에는 이름 행 이 없습니다 . 올바른 해결책이에 있다는 것을 알고 GROUP BY name
있지만 그룹화 할 수없는 이유를 이해할 수 없습니다 author_id
. 당신의 도움을 주셔서 감사합니다.
먼저 정규화 된 열 참조를 사용하여 쿼리를 작성하여 더 쉽게 따라야합니다.
SELECT a.name, COUNT(*)
FROM books b JOIN
authors a
ON b.author_id = a.id
GROUP BY b.author_id;
왜 작동하지 않습니까? 분명히 SELECT
및 GROUP BY
열은 다릅니다! 그들은 같은 테이블에서 나온 것도 아닙니다.
다음 이 작동 할 수 있습니다.
SELECT a.name, COUNT(*)
FROM books b JOIN
authors a
ON b.author_id = a.id
GROUP BY a.id;
이 authors.id
기본 키로 선언 된 경우 작동합니다 unique
. 이는 고유 키 또는 기본 키가 키에있을 때 모든 열이 참조되는 기능 종속성 이라는 기능 때문에 작동 GROUP BY
합니다.
그러나 그러한 명시 적 선언이 없으면 절에 필요 a.name
합니다 GROUP BY
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다