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