我需要在sql / php中查询两个表以获取照片库数据库

时间:2017-09-06 21:54:27

标签: php mysql

我有两张桌子,photo_albums和图片。

photo_albums

  • photo_albums_id:int(11)
  • cover_photo_id:int(11)

图片

  • images_id:int(11)
  • img_name:varchar(255)
  • photo_albums_id:int(11)

我需要查询数据库以返回所有相册,仅返回一次,以及与每张相册相关联的cover_photo_id的img_name。我不想退回每张专辑中的所有照片。如果没有与专辑相关联的封面图像,它也需要工作。这将返回所有相册:

SELECT * FROM photo_albums ORDER BY photo_albums_id;

但我不确定如何让以下位工作:

SELECT * FROM images WHERE image_id = cover_photo_id;

3 个答案:

答案 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这两张桌子。 JOINSQL中您可以学习的基本和最重要的事情之一。主要有3种类型; INNEROUTERFULL。有一个破解帖子HERE解释了不同的类型和图表,使其非常容易理解。

一旦他们JOIN,您也可以添加WHEREORDER,例如:

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)

谢谢你们,你们都指出了我正确的方向。主要位的Barmar和关于连接类型的链接的dbajtr。这就是诀窍:

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'