2013-10-11 20 views
0

我有2個表,項目/圖片相關:SQL得到基於2臺插入最後5個項目加入

[project] 
project_id (int primary key) 
completed (date) 

[project_media] 
project_media_id (int primary key) 
project_id (int foreign key) 
image (varchar) 

我要選擇的是:從去年5個項目記錄
基礎上完成,根據project_media_id獲取最後添加的圖像。

換句話說,從最後5個項目插入的最後一張圖片。

我到目前爲止有:

select project.completed, project_media.project_id, project_media.image 
from project 
inner join project_media 
    on project.project_id = project_media.project_id 
order by completed desc limit 5 

回答

0
SELECT PR.*, 
(
    SELECT PM.image FROM project_media PM 
    WHERE PR.project_id = PM.project_id 
    ORDER BY PM.project_media_id DESC 
    LIMIT 1 
) AS image 
FROM 
(
    SELECT P.project_id, P.completed 
    FROM project P 
    ORDER BY P.completed DESC 
    LIMIT 5 
) AS PR 
0

如果你想只得到最近五個東西,在項目表中,你可以這樣做:

select * from project order by completed desc limit 5; 

加盟在另一張桌子上,你會得到類似這樣的結果:

select * from project p join project_media pm on p.project_id = pm.project_id order by completed desc limit 5; 

限制列,您的查詢將是:

select pm.image from project p join project_media pm on p.project_id = pm.project_id order by completed desc limit 5; 

我有點不清楚你問在最後一位是什麼,但它聽起來像你現在想只有一個圖像基礎上media_project_id,從這五件事情。你可以用子查詢來做到這一點:

select a.image from (select pm.image, pm.project_media_id from project p join project_media pm on p.project_id = pm.project_id order by completed desc limit 5) a order by a.project_media_id limit 1; 

這是回答您的問題嗎?

0
SELECT PM2.image 
FROM 
(
    SELECT 
     P.project_id, 
     MAX(PM.project_media_id) AS last_project_media 
    FROM project_media PM 
    JOIN project P ON P.project_id = PM.project_id 
    GROUP BY PM.project_id 
    ORDER BY PM.completed DESC 
    LIMIT 5 
) PM1 
JOIN project_media PM2 
    ON PM1.last_project_media = PM2.project_media_id