Php 选择两个表的最佳方法

Php 选择两个表的最佳方法,php,mysql,select,Php,Mysql,Select,PHP+MYSQL 我有两张桌子: “发布”列:[id,注释] “图像”列:[id、post、image] 我需要显示在我的html页面的帖子,与图像在每个帖子。例如: 我的第一条帖子评论(这篇帖子有一张图片) 图1 我的第二篇帖子评论(这篇帖子有三幅图片) 图1 图2 图3 我的第三篇文章(这篇文章有两张图片) 图1 图2 一种方法是:对于每篇文章,转到数据库并获取图像。。。但我认为访问数据库的次数越少越好。。。我怎样做我的选择 (我想每个职位一行…)有可能吗 结果示例

PHP+MYSQL

我有两张桌子:

  • “发布”列:[id,注释]
  • “图像”列:[id、post、image]
我需要显示在我的html页面的帖子,与图像在每个帖子。例如:


我的第一条帖子评论(这篇帖子有一张图片)

  • 图1

我的第二篇帖子评论(这篇帖子有三幅图片)

  • 图1
  • 图2
  • 图3

我的第三篇文章(这篇文章有两张图片)

  • 图1
  • 图2

一种方法是:对于每篇文章,转到数据库并获取图像。。。但我认为访问数据库的次数越少越好。。。我怎样做我的选择

(我想每个职位一行…)有可能吗

结果示例:

列后-列图像

“我的第一篇帖子”-“image1.jpg,image2.jpg,image3.jpg”

还有其他更好的方法吗


谢谢

把这两张桌子连在一起,你就有你想要的了。您只需通过邮政id订购即可

SELECT POST.ID AS POST_ID, P.COMMENT, IMAGES.IMAGE
FROM POST
JOIN IMAGES ON IMAGES.POST = POST.ID
ORDER BY POST.ID
只需使用连接与一篇文章相关的多个图像,如下例所示:

SELECT POST.ID AS POST_ID, GROUP_CONCAT(IMAGES.IMAGE) AS IMAGES
FROM POST
JOIN IMAGES ON IMAGES.POST = POST.ID
GROUP BY POST.ID
ORDER BY POST.ID

图像上的post列是post表中引用的id吗?听起来您只需要在queryyes@Prix中加入一个联接。。。是外键…为
图像返回单独的行将是一种更“可移植”的方法,相同的设计可用于不同的数据库。在一列中返回单个图像值依赖于单个供应商特定的扩展,MySQL
GROUP_CONCAT
、Oracle 11gR2
LISTAGG
、SQL Server
STUFF(子查询)
,等等。是的,true story@Spencer7593这样,如果我有3个图像,我有3行。。。我想每个职位1行。。。有可能吗?使用sql select,您可以得到表形式的结果。如果你给我一个例子,结果应该是什么样子的,我可以告诉你这是否可能。你应该能够用PHP处理这三行,这就是为什么你应该按Post-idies排序结果是的。。。也许我会这么做。。。但我真的很想知道最好的方法…更好更快的是一个简单的加入和处理它在PHPThanks!你认为什么更好更快?一个简单的连接,我在PHP或GROUP_CONCAT中处理多行?谢谢我们可能需要补充一点,即
GROUP\u CONCAT
返回的字符串的最大长度受
GROUP\u CONCAT\u max\u len
max\u allowed\u packet
变量的限制。我们可能还想注意到,
GROUP\u CONCAT
是MySQL特有的。(但其他一些数据库确实提供了类似的功能,例如Oracle 11gR2提供了与LISTAGG功能类似的功能。谢谢@spencer7593…每篇文章可以有8个图像。每个图像名称=50个字符…8x50=400个字符。这非常少。。不是吗?@guinatal:
组的默认设置是1024(我认为它是以字节而不是字符来指定的。如果超过该长度,返回的字符串将被截断为该长度,因此最好有一种方法来检测已返回的最大长度,这表明返回值可能已被截断。您的用例可能是一个很好的“适合”对于GROUP_CONCAT,但在更一般的情况下(为了未来读者的利益),我认为我们必须意识到限制,以免被意外发现(最大名称长度>128个字符,或#图像>24个)