2009-08-27 3 views
0

두 개의 쿼리를 단일 쿼리로 단순화하는 방법이 있는지 궁금합니다. 데이터베이스에서 꺼내 데이터를 정렬 할 수 있기를 원합니다. 그러면이 작업을 수행 할 수 있습니다.두 개의 mysql Select 문을 결합하여 결과 데이터를 정렬 할 수 있습니다.

table: files 
------------------------ 
fileID (INT) | domainID (INT) 
------------------------ 

table: domains 
------------------------ 
domainID (INT) | domainName (text) 
------------------------ 

table: serverFiles 
------------------------ 
fileID (INT) | uniqueUploads (INT) 
------------------------ 

나는 현재 처음이 쿼리를 실행하고 있습니다 :

표는 설정이 같다

SELECT domains.domainName, files.fileID, COUNT(files.fileID) 
FROM domains, files 
WHERE files.domainID = domains.domainID 
GROUP BY files.domainID; 

가 그럼 난 결과 FileID에를 사용하여 두 번째 쿼리를 실행하고 해당 쿼리의 결과를 통해 반복 첫 번째 쿼리 ($ fileIDFromFirstQuery) :

SELECT serverFiles.uniqueUploads 
FROM serverFiles 
WHERE serverFiles.fileID = '$fileIDFromFirstQuery'; 

결과가 나옵니다. 같은 :

Domains  | Files with Domain | Unique Uploads 
-------------------------------------------------- 
domain1.com   32    1412 
domain2.com   21    699 
domain3.com    52     293 
+0

감사합니다. Eric, 훌륭하게 작동했습니다. 너는 너무 빨리 대답했다 !! – salonMonsters

답변

1

나는이 일을해야한다고 생각 :

SELECT domains.domainID, domainName, COUNT(*), SUM(uniqueUploads) 
FROM domains 
INNER JOIN files ON files.domainID = domains.domainID 
INNER JOIN serverFiles on serverFiles.fileID = files.fileID 
GROUP BY domains.domainID, domainName 

ETA :

어쩌면 내가 여기에 모든 것을보고,하지만 아니에요 그냥으로 ServerFiles 테이블 제거하고 넣어되지 왜 " 파일 테이블에서 "uniqueUploads"? 어쩌면 여러 도메인간에 파일을 공유하고있는 경우가 아니라면 말이 될 것입니다.