0

これはおそらく非常に基本的なことですが、サブセレクトの経験はまったくありません。

と の 2 つのテーブルがprm_albumありgallery_metaます。prm_album各アルバムの名前と ID をgallery_meta保存し、すべてのアルバムのすべての画像の画像の詳細を保存します。したがって、関連する列は次のとおりです。

prm_album: ID、名前
gallery_meta: FileName、AlbumID、FileExt、IsDefault、Created

2 つのクエリを組み合わせようとしています。1 つはアルバムのリストを提供し、もう 1 つはそれらの各アルバムのサムネイル情報を提供しました。今回は、各アルバムの名前、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を選択しなかったため、クエリでp.AlbumIDが見つかりません。IsDefaultただし、アルバムごとに1つしかない場合:

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 に答える