2015-12-25 67 views
-1

插入最新的記錄我有兩個表類別和照片如何獲得日期

類別

CATEGORYID CATEGORY 
------------------- 
1   Nature 
2   Animals 
3   Travelling 
4   Foods 

照片

PHOTOID FILENAME CATEGORYID URL          TIMEUPLOADED 
    ------------------------------------------------------------------------------------------------ 
    1001  file1.jpg 1   http://www.server.com/1001/file1.jpg  2015-12-25 19:21:22 
    1002  file2.jpg 1   http://www.server.com/1002/file2.jpg  2015-12-24 19:21:22 
    1003  file3.jpg 1   http://www.server.com/1003/file3.jpg  2015-12-22 19:21:22 
    1004  file4.jpg 2   http://www.server.com/1004/file4.jpg  2015-12-21 19:21:22 
    1005  file5.jpg 2   http://www.server.com/1005/file5.jpg  2015-12-20 19:21:22 
    1006  file6.jpg 3   http://www.server.com/1006/file6.jpg  2015-12-19 19:21:22 
    1007  file7.jpg 4   http://www.server.com/1007/file7.jpg  2015-12-18 19:21:22 
    1008  file8.jpg 3   http://www.server.com/1008/file8.jpg  2015-12-17 19:21:22 
    1009  file9.jpg 4   http://www.server.com/1009/file9.jpg  2015-12-16 19:21:22 

我想最新照片上傳在相應類別其圖像計數如下輸出

PHOTOID FILENAME CATEGORYID CATEGORY  URL          TIMEUPLOADED   IMGCOUNT 
---------------------------------------------------------------------------------------------------------------------- 
1001  file1.jpg 1   Nature  http://www.server.com/1001/file1.jpg  2015-12-25 19:21:22 3 
1004  file4.jpg 2   Animals  http://www.server.com/1004/file4.jpg  2015-12-21 19:21:22 2 
1006  file6.jpg 3   Travelling http://www.server.com/1006/file6.jpg  2015-12-19 19:21:22 2 
1007  file7.jpg 4   Foods  http://www.server.com/1007/file7.jpg  2015-12-18 19:21:22 2 

我嘗試使用下面的查詢

SELECT t1.*,COUNT(*) AS IMGCOUNT FROM photos t1 GROUP BY CATEGORYID order by TIMEUPLOADED desc; 

,但它並沒有給出正確的結果

下面的查詢提供了最新的照片在各自的上傳,但它並沒有給圖像計數

SELECT t1.*,COUNT(*) AS IMGCOUNT FROM photos t1 
LEFT JOIN category t2 on t1.CATEGORYID = t2.CATEGORYID 
JOIN (SELECT CATEGORYID, max(TIMEUPLOADED) maxdt FROM photos GROUP BY CATEGORYID) t3 ON t1.CATEGORYID = t3.CATEGORYID 
AND t1.TIMEUPLOADED = maxdt 
GROUP BY t1.CATEGORYID order by t1.TIMEUPLOADED desc; 

回答

1

我認爲這會工作。我創建了一個測試表就跑。您想要發佈給定類別的最年輕的照片..以及該類別的總照片數量以及..

select 

tmp.categoryid, 
tmp.mycount, 
tmp.maxpid, 
p4.filename, 
p4.url, 
p4.timeuploaded 

from 
(select 

p.categoryid, 
count(p.photoid)as mycount, 
(select max(photoid) 
    from test.photo p1 
    where p1.categoryid = p.categoryid and p1.timeuploaded = (
         select max(p2.timeuploaded) from test.photo p2 
          where p.categoryid = p2.categoryid)) as maxpid 

from test.photo p group by p.categoryid) 

as tmp 

join test.photo p4 on 

    p4.photoid = tmp.maxpid 
+0

非常感謝....! –

0

由於CATEGORYID包含多個具有不同PHOTOID的文件名,因此無法進行查詢。除非你想從這些類別得到最小的或最大的:

select min(`PHOTOID`) as `PHOTOID`, min(`FILENAME`) as `FILENAME`, 
    `CATEGORYID`, min(`URL`) as `URL`, min(`TIMEUPLOADED`) as `TIMEUPLOADED`, 
    count(*) as 'IMGCOUNT' 
    from photos group by `CATEGORYID` order by `TIMEUPLOADED` desc; 

SQLFiddle