2009-08-27 100 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

謝謝埃裏克,那工作很好。你回答得太快了! – salonMonsters 2009-08-27 18:57:30

回答

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「在文件表上?除非你可能在多個域之間共享文件,在這種情況下,這是有道理的。

相關問題