gpt4 book ai didi

php - 如何在 3 向 MYSQL 连接中检索以逗号分隔的链接 ID 列表?

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

我正在创建一个图书标签系统(我敢肯定这已经完成了很多次),我想创建一个 view 给我每本书,以及它的标签的名字。

我有三个表:

  1. 书籍(id,名字)

  2. 标签(id,名字)

  3. bookTags (id, book, tag)

我想要一个 View

  1. booksInfo (books.id, books.name, [comma-separated-tags.names], [tagids])

使用我当前的 View (在下面的sql fiddle 中),我得到了重复的行,每个标签书对一个。

我很想得到这样的东西:

   BOOKID          NAME            TAGS                    TAGIDS
------ ----------- -------------------- ---------
1 1984 Dystopian, Political 3, 4
2 White Fang Dogs, Nature 5, 9
3 Bible Religion, History 6, 10
4 1776 Political, History 4, 10

我在这里创建了一个 sqlfiddle:http://sqlfiddle.com/#!2/74b57/1/0

我可以在选择后使用 PHP 执行此操作,然后遍历它并创建一个单独的数组,但这似乎没有必要。我发现 MySQL 几乎总是有查询方式来做某事。

最佳答案

GROUP_CONCATGROUP BY 一起使用

select 
b.id 'id',
b.name 'name',
GROUP_CONCAT(t.name) 'tag',
GROUP_CONCAT(t.id) 'tagid'
from
bookTags bt
left join
books b ON b.id = bt.book
left join
tags t ON t.id = bt.tag
GROUP BY bt.book;

fiddle 的结果

+------+------------------+------------------+-------+
| id | name | tag | tagid |
+------+------------------+------------------+-------+
| 1 | 1984 | Government | 2 |
| 2 | Huckelberry Finn | Adventure | 1 |
| 3 | The bible | Religion | 3 |
| 4 | White Fang | Adventure,Nature | 1,4 |
+------+------------------+------------------+-------+
4 rows in set (0.00 sec)

关于php - 如何在 3 向 MYSQL 连接中检索以逗号分隔的链接 ID 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22036476/

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