LEFT JOIN中的MySql LEFT JOIN

时间:2013-08-24 01:51:32

标签: mysql join

我正在尝试对搜索框执行以下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

1 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情

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