我正在尝试对搜索框执行以下 MySql 查询。我试图返回“专辑”信息(标题等),同时包含该专辑中第一张图片的缩略图。但是,我必须查找两个表才能获取图像信息。首先,photos_albums
包含该相册中的所有图像,获取第一张图像 ID
从该表中,然后在 photos
中查找该图像信息 table 。我相信我遇到的问题是我需要告诉第一个 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
你可以试试这样的东西
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
Tôi là một lập trình viên xuất sắc, rất giỏi!