gpt4 book ai didi

php - 如何处理从 books-table 查询返回的多个作者

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:40 24 4
gpt4 key购买 nike

以前我将作者姓名存储到我的书表中,这不是最佳做法。所以我将作者外包给一个单独的表,并通过数据透视表连接数据。我的查询如下所示:

SELECT  b.id, b.title, CONCAT(a.fname,' ' , a.lname) AS author_name, a.id as author_id
FROM books b
LEFT JOIN author_book ab ON b.id = ab.book_id
LEFT JOIN authors a ON ab.author_id = a.id
WHERE b.id = '406'

到目前为止一切正常,但我的查询不仅返回一行数据,还返回两行数据 - 每个作者一个。

id  | title                          |  author_name      | author_id
--------------------------------------------------------------------
406 | The world of the wheel of time | Robert Jordan | 2
406 | The world of the wheel of time | Teresa Patterson | 3

但我真的只想输出多位作者的一本书 - 而不是一位作者的多本书。在此示例中,执行此操作并不难,但是当我搜索包含短篇小说的书籍时会发生什么情况?多达十几位作者参与其中。然后返回的结果可能类似于此示例:

id  | title                          |  author_name      | author_id
--------------------------------------------------------------------
103 | Here Be Monsters | M.T. Murphy | 12
103 | Here Be Monsters | S.M. Reine | 6
103 | Here Be Monsters | India Drummond | 182
103 | Here Be Monsters | Anabel Portillo | 643
103 | Here Be Monsters | Jeremy C. Shipp | 35
103 | Here Be Monsters | Samantha Anderson | 58
103 | Here Be Monsters | Sara Reinke | 26
521 | Science Fiction Megapack | Fritz Leiber | 19
521 | Science Fiction Megapack | C.M. Kornbluth | 27
521 | Science Fiction Megapack | Philip K. Dick | 24
521 | Science Fiction Megapack | E.C. Tubb | 46
521 | Science Fiction Megapack | John Glasby | 67

我可以尝试使用 GROUP BY id 或 title 但这样一来作者就会迷路了。 (一些 php 数组操作可能是一种解决方案?)。您将如何输出这些数据,以便每本书都与所有作者一起保持单一实体?

最佳答案

您可能需要考虑像这样使用 GROUP_CONCAT():

SELECT
b.id,
b.title,
GROUP_CONCAT(CONCAT(a.fname,' ' , a.lname)) AS author_names,
GROUP_CONCAT(a.id) as author_ids
FROM books b
LEFT JOIN author_book ab
ON b.id = ab.book_id
LEFT JOIN authors a
ON ab.author_id = a.id
WHERE b.id = '406'
GROUP BY b.id

这会给你这样的输出:

406 | The world of the wheel of time | Robert Jordan,Teresa Patterson     | 2,3

关于php - 如何处理从 books-table 查询返回的多个作者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15797921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com