我有两张桌子,photo_albums和图片。
photo_albums
图片
我需要查询数据库以返回所有相册,仅返回一次,以及与每张相册相关联的cover_photo_id的img_name。我不想退回每张专辑中的所有照片。如果没有与专辑相关联的封面图像,它也需要工作。这将返回所有相册:
SELECT * FROM photo_albums ORDER BY photo_albums_id;
但我不确定如何让以下位工作:
SELECT * FROM images WHERE image_id = cover_photo_id;
答案 0 :(得分:0)
这是一个简单的JOIN
:
SELECT a.*, i.img_name
FROM photo_albums AS a
JOIN images AS i ON i.image_id = a.cover_photo_id
答案 1 :(得分:0)
你只需要JOIN
这两张桌子。 JOIN
是SQL
中您可以学习的基本和最重要的事情之一。主要有3种类型; INNER
,OUTER
和FULL
。有一个破解帖子HERE解释了不同的类型和图表,使其非常容易理解。
一旦他们JOIN
,您也可以添加WHERE
和ORDER
,例如:
SELECT
*
FROM table1 t1
INNER JOIN table2 t2 on t1.id = t2.id
WHERE t1.column2 = t2.column3
ORDER BY
t2.column4
这使用INNER JOIN
,因此只会获取两个表中都存在的记录。
答案 2 :(得分:0)
SELECT a.*, i.img_name
FROM photo_albums
AS a
LEFT OUTER JOIN images AS i ON i.images_id = a.cover_photo_id
WHERE a.status = '1'