2009-08-27 62 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“在文件表上?除非你可能在多个域之间共享文件,在这种情况下,这是有道理的。

相关问题