2012-04-19 13 views
0

我有一个查询,左连接的一部分要么返回数据或空。但即使有现有记录,它也不会返回任何数据。左连接部分的扭曲是我只想检索一条记录(如果存在)。谢谢你的帮助。MySQL查询不recieving我左边的任何数据连接

select a.*,p.thumbnailphotopath as AlbumPicture 
from (select * from album_access) ac 
inner join (select * from albums) a on a.ID = ac.AlbumID 
left join (
    select * from photos 
    where IsProcessed = 1 order by DateUploaded desc limit 1 
) p 
on a.ID = p.AlbumID #should return one if exist. 
where ac.AccessUserID = '35e44a8e-643a-4c4f-8a46-59911a1e7c53' 
    and ac.FullControl = 1 and a.Private = 1 

回答

2

首先,你可以刚刚加入一个表名,并不需要加入对整个SELECT * FROM语句。

其次,你应该尽量不要使用SELECT *,而是选择所需的列。

但我认为你LEFT JOIN的问题是,你要加入一个子查询,将只返回一个结果,这将是上传不管是哪个的ALBUMID它属于在最后的照片的条目。如果你想与每一行的最后上传日期在照片中的条目,尝试这样的事情

SELECT a.*,p.thumbnailphotopath AS AlbumPicture 
FROM album_access ac 
INNER JOIN albums a ON a.ID = ac.AlbumID 
LEFT JOIN (
    SELECT albumID,MAX(DateUploaded) FROM photos 
    WHERE IsProcessed = 1 GROUP BY albumID 
) p ON a.ID = p.AlbumID #should return one if exist. 
WHERE ac.AccessUserID = '35e44a8e-643a-4c4f-8a46-59911a1e7c53' 
    AND ac.FullControl = 1 
    AND a.Private = 1 
+0

谢谢这个工作,我不明白你是如何得到它返回只有一个值?是MAx关键字? – user516883 2012-04-19 18:58:36

+0

再次感谢您的帮助 – user516883 2012-04-19 19:13:49