【问题标题】:I need to query two tables in sql/php for a photo gallery database我需要在 sql/php 中查询两个表以获取照片库数据库
【发布时间】:2017-09-06 21:54:27
【问题描述】:

我有两张表,photo_albums 和 images。

相册

  • 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;

【问题讨论】:

  • 您需要阅读 SQL 教程。连接是基本的 SQL 技术。

标签: php mysql


【解决方案1】:

这是一个简单的JOIN

SELECT a.*, i.img_name
FROM photo_albums AS a
JOIN images AS i ON i.image_id = a.cover_photo_id

【讨论】:

  • 那么这算SQL教程吗?
  • @Strawberry 算是一个遗憾的回答。我每周给他们一次或两次。 :)
  • 大家好,感谢您的遗憾回答。我不是以此为生的,所以请原谅我尝试学习一项新技能。但是,它并不能解决归还所有专辑的问题。它只返回具有 cover_photo_id 的相册。
  • 你不会通过让别人为你做某项技能来学习它。阅读教程并开始编写代码。
  • Jason - 我怀疑这个标签下只有少数贡献者以 mysql 为生(我没有);但我可能弄错了
【解决方案2】:

你只需要JOIN 两个表一起。 JOIN 是您可以在 SQL 中学到的基本和最重要的东西之一。有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,因此只会获取两个表中都存在的记录。

【讨论】:

    【解决方案3】:

    谢谢大家,你们都为我指明了正确的方向。主要位的 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'
    

    【讨论】:

      猜你喜欢
      • 2012-08-21
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多