0
使用MySQL,我有一組表格,其中包含來自成員 - >項目 - >照片的1-> N關係。SQL - 選擇第一個匹配記錄加入
我想選擇一個成員的項目列表+從第一個相關的照片(首先我的意思是最低排序順序的照片)的一些列。
目前我有這個查詢哪些工作,但似乎過於複雜。有沒有更簡單的方法和/或如何改進這個查詢。特別是,我關心最內在的選擇聲明 - MySQL是否會優化它,僅針對有問題的成員使用照片,並且應該使用其他where子句來幫助優化它。
SELECT items.member_id, items.item_id, items.title, p.photo_id, p.blob_id, p.image_width, p.image_height
FROM items
LEFT JOIN
(
SELECT photos.item_id, photos.photo_id, photos.blob_id, photos.image_width, photos.image_height
FROM
(
SELECT item_id, min(sort_order) as min_sort_order
FROM photos
GROUP BY item_id
) AS x
INNER JOIN photos on photos.item_id=x.item_id and photos.sort_order=x.min_sort_order
) AS p ON items.item_id = p.item_id
WHERE items.member_id=1
ORDER BY items.title;
差不多。我忘了提及物品不需要有照片。此查詢不會返回這些項目。 – 2010-09-28 21:23:00
在這種情況下,您的查詢似乎沒問題。 – CristiC 2010-09-29 07:09:32