SQL 쿼리가 발생했습니다. 나는 을 알고 무엇하지만 알아낼 수 없다 어떻게. 그래서, 여기에 필요한 제도입니다 :SQL 그룹화 쿼리
영화 (제목, 이사, 연도, 장르, 속도);
TITLE DIRECTOR YEAR GENRE RATE
Fight club Fincher 1999 Action 4.5
Vertigo Hitchock 1958 Drama 5
Donnie darko Kelly 2001 Thriller 3.5
비디오 (표제, 이사, colloc);
TITLE DIRECTOR COLLOC
Fight club Fincher 3877
Fight club Fincher 3878
Vertigo Hitchcock 5431
Vertigo Hitchcock 5432
Donnie darko Kelly 9986
임대 (colloc, dateRent, 고객, dateReturn);
목록, 적어도 두 번 임대 얼마나 많은 비디오 각 영화에 대한 : 여기
COLLOC DATERENT CUSTOMER DATERETURN 3877 2016-05-02 324 2016-05-04 3877 2016-05-20 365 2016-05-20 3878 2016-04-11 876 2016-04-12 3878 2016-06-06 112 2016-06-08 ... ... ... ... ... ... ... ... 9986 2016-02-24 443 2016-02-28
그리고
는 쿼리입니다.(참고 : 매장에는 일반적으로 영화마다 DVD, VHS 등이 더 많습니다.)
내 접근 방식은 다음과 같습니다
TITLE DIRECTOR VIDEOSNUMBER
Fight club Fincher 2
Vertigo Hitchcock 1
Donnie darko Kelly 0
이에 도착하기 위해
COLLOC TITLE DIRECTOR RENTNUMBER
3877 Fight club Fincher 2
3878 Fight club Fincher 2
5432 Vertigo Hitchcock 2
5431 Vertigo Hitchcock 1
9986 Donnie darko Kelly 1
: 나는
SELECT colloc, title, director, COUNT(colloc) AS rentNumber
FROM Rent
NATURAL JOIN Video
GROUP BY colloc
이런 식으로 뭔가를 표시하려면이 간단한 쿼리로 시작하는 것입니다
하지만이 마지막 단계가 없어서 GROUP BY/HAVING을 적절하게 사용할 수 없습니다. 하위 쿼리를 사용하더라도 성공하지 못했습니다. 나는 다른 접근법을 사용하려고 노력했지만 아무런 도움이되지 않아서 어떤 조언도 감사 할 것입니다.
감사합니다.
편집 : 참고 : 쿼리에서 테이블 Movie를 사용할 필요가 없습니다. 저는 영화가 하나 이상의 비디오를 가질 수 있다는 것을 설명하기 위해 그곳에 넣었습니다. 표 예제를 추가했습니다. 기본 키는 굵게 표시됩니다.
해결 방법 : 팁 덕분에 해결책을 찾았습니다 (적어도 2 번 이상 대여 한 동영상이없는 모든 영화를 제공하므로 솔직히 부분적입니다). 어쨌든, 여기있다 :
SELECT title, director, COUNT(title) AS videosNumber
FROM (SELECT colloc, title, director, COUNT(colloc) AS rentNumber
FROM rent NATURAL JOIN video
GROUP BY colloc
) X
WHERE rentNumber > 1
GROUP BY title
내가 생각을 당신이해야 GROUP 규정에 의한 일반 GROUP 말한다 titolo – Kasnady
BY : GROUP BY 절이 지정된 경우 SELECT 목록의 각 열 참조 중 하나를 식별해야합니다 그룹화 열 또는 집합 함수의 인수 일 수 있습니다! – jarlh
지정된 예상 결과를 생성하여 샘플 테이블 데이터를 추가하십시오! – jarlh