0

这可能是非常基本的,但我对子选择完全没有经验。

我有两张桌子:prm_albumgallery_metaprm_album存储每个相册的名称和 ID,gallery_meta存储每个相册的每个图像的图像详细信息。因此,所涉及的列是:

prm_album:ID、名称
gallery_meta:文件名、专辑 ID、FileExt、IsDefault、已创建

我正在尝试结合两个查询 - 一个给了我专辑列表,另一个给了我每个专辑的缩略图信息。这次我想以一个数组结束,我可以在其中获取每个专辑的名称、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'。所有建议表示赞赏。

4

2 回答 2

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)
于 2012-08-04T19:03:34.433 回答
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
于 2012-08-04T19:01:02.417 回答