2008-11-24 86 views
1

這裏是我的方案的簡化版本:查詢與集合記錄鍵引用的每個記錄相關聯的N個記錄

  • 我有一個名爲項目,我通過一個「身份證」字段參考表。
  • 我有一個名爲照片,有一個名爲「PROJECT_ID」我用它來涉及多張照片,以單個項目字段表。照片表格還有一個自動遞增的'id'字段,用於訂購等等。

這是我想要完成的任務:對於項目的ID值的集合,我想找回過去的5張照片添加到每個項目 - 最好在一個單一的查詢,當然。 :-)

換句話說,我不希望強加一個查詢限制,而是希望爲每個項目限制返回的照片數量。

我目前實施這一爲每個項目一個查詢,因此n項目= N查詢(良好的緩存策略肯定會減少傷害,但後來這會來)。

任何人都有解決方案?

謝謝。

回答

0
SELECT project.*, photo.* 
    FROM photo 
    LEFT JOIN project USING project_id 
WHERE photo.project_id = '{$id}' 
ORDER BY photo_id DESC 
LIMIT project.project_photos_limit 

試試嗎? (與你的字段名,很明顯)

0

philistyne的解決方案稍做修改:

SELECT project.*, photo.* 
    FROM photo 
    LEFT JOIN project USING(project_id) 
WHERE photo.project_id IN (comma separated list of project ids) 
ORDER BY photo_id DESC 
LIMIT project.project_photos_limit 

雖然我不知道,如果限制將讓你使用一個字段來做到這一點。