4 테이블 조인 각 캠페인에 대한 결과 대신 각 회사마다 1 개의 응답 만 제공됩니다.
문제
당신의 도움을 주셔서 감사합니다!
ServerFiles에 업로드 된 모든 회사 이름 항목을 다음과 같이 출력하고 싶습니다.
companies.companyname -count (files.fileid) - sum (serverfiles.uniqueuploads)
Initech Ltd. - 11 - 24931
Epiphyte Inc. - 23 - 938821
다음은 내 테이블 구조의 릴리스 부분입니다.
표 : 회사
companyID (INT) - companyName (TEXT)
표 : 캠페인
campaignID(INT) - companyID (INT)
표 : 파일
fileID (INT) - campaignID (INT)
표 : ServerFilesServerFileId (int) -FileId (int) -IniverUploads (int)
각 회사는 여러 캠페인을 가질 수 있습니다.
각 캠페인에는 여러 파일이있을 수 있습니다.
각 파일에는 여러 개의 ServerFiles가있을 수 있습니다
내가 사용하려는 쿼리는 다음과 같습니다.
SELECT companies.companyName, sum(serverFiles.uniqueUploads), count(files.fileID)
FROM companies
INNER JOIN campaigns on companies.companyID = campaigns.companyID
INNER JOIN files on files.campaign = campaigns.campaignID
LEFT OUTER JOIN serverFiles on serverfiles.fileID = files.fileID
GROUP BY serverFiles.uniqueUploads, files.fileID
ORDER BY sum(serverFiles.uniqueUploads) DESC;
그러나 이는 각 회사에 대한 여러 출품작을 반환합니다 (회사의 각 캠페인마다 하나씩 각 회사에 대해 여러 출력을 생성하므로).
예 :
companies.companyname -count (files.fileid) - sum (serverfiles.uniqueuploads)
Initech Ltd. - 2 - 234234 (for initech campaign1)
Initech Ltd. - 4 - 223323 (for initech campaign2)
Epiphyte Inc. - 13 - 6434 (for epiphyte campaign1)
Initech Ltd. - 1 - 554 (for initech campaign3)
Epiphyte Inc. - 13 - 7544 (for epiphyte campaign2)
Epiphyte Inc. - 11 - 74545 (for epiphyte campaign3)
Epiphyte Inc. - 23 - 456544 (for epiphyte campaign4)
쿼리를 변경하려면 각 회사에 대해 한 번의 응답 만 제공하여 해당 회사의 모든 캠페인을 요약 한 방법입니다.
도움을 주셔서 감사합니다.
해결책
쿼리는 괜찮습니다. 해야한다
GROUP BY companies.companyName
다른 팁
회사 이름을 그룹에 추가하고 최소/최대를 수행하여 선택 목록에서 하나를 가져 오십시오.
SELECT MAX(companies.companyName), sum(serverFiles.uniqueUploads), count(files.fileID)
FROM companies
INNER JOIN campaigns on companies.companyID = campaigns.companyID
INNER JOIN files on files.campaign = campaigns.campaignID
LEFT OUTER JOIN serverFiles on serverfiles.fileID = files.fileID
GROUP BY companies.companyName, serverFiles.uniqueUploads, files.fileID
ORDER BY sum(serverFiles.uniqueUploads) DESC;
제휴하지 않습니다 StackOverflow