这可能是非常基本的,但我对子选择没有任何经验。
我有两个表:prm_album
和gallery_meta
。 prm_album
存储每个相册的名称和ID,gallery_meta
存储每张相册中每张图片的图片详细信息。因此涉及的列是:
prm_album: ID, Name gallery_meta: FileName, AlbumID, FileExt, IsDefault, Created
我试图合并两个查询 - 一个给了我一张专辑列表,另一个给了我这些专辑的缩略图信息。我想最终得到一个阵列,我可以获得每个专辑的名称,ID,以及它的默认(或第一)图像信息。
SELECT a.ID, a.Abbr, a.Name, p.FileName, p.FileExt
FROM prm_album a
LEFT JOIN (
SELECT FileName, FileExt
FROM gallery_meta
ORDER BY (IsDefault = 1) DESC, Created ASC
LIMIT 0,1 ) AS p
ON (a.ID = p.AlbumID)
WHERE 1
当通过控制台时,会抛出错误Unknown column 'p.AlbumID' in 'on clause'
。所有建议都表示赞赏。
答案 0 :(得分:1)
在您的查询中,它找不到p.AlbumID,因为您没有在子查询中选择它。但是,如果每张专辑只有一个IsDefault
:
SELECT a.ID, a.Abbr, a.Name, p.FileName, p.FileExt
FROM prm_album a
LEFT JOIN
gallery_meta p ON (a.ID = p.AlbumID AND p.IsDefault = 1)
答案 1 :(得分:0)
SELECT a.ID, a.Abbr, a.Name, p.FileName, p.FileExt
FROM prm_album a
LEFT JOIN gallery_meta p
ON p.AlbumID=a.ID
GROUP BY a.ID
ORDER BY p.IsDefault DESC, p.Created ASC