2

我正在尝试对搜索框执行以下 MySql 查询。我正在尝试返回“专辑”信息(标题等),同时包含该专辑中第一张图片的缩略图。但是,我必须查找两个表才能获取图像信息。首先,photos_albums包含该相册中所有图像的,ID从该表中获取第一张图像,然后在表中查找该图像信息photos。我相信我遇到的问题是我需要告诉第一个 LEFT JOIN 将查询限制为 1,但我没有运气这样做。我想我需要在一个 JOIN 中做一个 JOIN?对此的任何帮助将不胜感激。

SELECT albums.title, albums.title_url, photos.path, photos.medType, photos.vpath
FROM albums
LEFT JOIN photos_albums
    ON photos_albums.album_id = albums.id
LEFT JOIN photos
    ON photos_albums.photo_id = photos.id
WHERE albums.user = '$site_user'
AND (
    albums.title LIKE '$keyword%'
    OR albums.title LIKE '% $keyword%')
LIMIT 6
4

1 回答 1

4

你可以试试这样的

SELECT a.title, a.title_url, q.path, q.medType, q.vpath
  FROM albums a LEFT JOIN 
(
    SELECT pa.album_id, pa.photo_id, p.path, p.medType, p.vpath
      FROM 
    (
        SELECT album_id, MIN(photo_id) photo_id
          FROM photos_albums 
         GROUP BY album_id
    ) pa JOIN photos p
        ON pa.photo_id = p.id
) q 
    ON a.id = q.album_id
 WHERE a.user = '$site_user'
   AND (
         a.title LIKE '$keyword%'
      OR a.title LIKE '% $keyword%')
 LIMIT 6
于 2013-08-24T03:22:28.833 回答