作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在创建一个图书标签系统(我敢肯定这已经完成了很多次),我想创建一个 view
给我每本书,以及它的标签
的名字。
我有三个表:
书籍(id,名字)
标签(id,名字)
bookTags (id, book, tag)
我想要一个 View
tags.name
s], [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_CONCAT
与 GROUP 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/
我是一名优秀的程序员,十分优秀!