我想知道是否有办法将这两个查询简化为一个查询。我希望能够在将数据从数据库中拉出来对数据进行排序,这样我就可以进行数据处理。
表格设置如下:
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 :(得分: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”?除非你在多个域之间共享文件,否则它会有意义。