我正在使用SQL(来自PHP脚本)从数据库中获取项目列表,即

SELECT `id`, `title` FROM `books` WHERE `removed` = NULL;


我还有一个包含文章的表格,其中的bookId列引用了书的ID。

SELECT `id`, `title` FROM `articles` WHERE `bookId`=1;


现在,我想准备所有书籍的清单,并希望为每本书查看所有相关文章(例如书名)。


书1


第1条
第二条

书2


第三条



到目前为止,我可以通过图像获取此类列表的唯一方法是首先执行查询以获取所有书籍,然后为每本书选择相关文章。但是,这将需要大量单独的SQL调用。

有没有人有任何想法可以通过一个电话获得这样的列表?

最佳答案

您可以将第二个SQL查询更改为:

SELECT `id`, `title`, 'bookId' FROM `articles`;


然后使用简单的foreach创建新数组,其中$ articles是此查询的结果数组:

$articlesByBook = [];
foreach ($articles as $article) {
   $articlesByBook[$article['bookId']][] = $article;
}


然后您可以通过以下方式访问给定书的所有文章:

$articlesByBook[$bookId]

关于php - 为每个项目选择子集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51113489/

10-08 21:57