希望这个问题能很好地解释它。我有一个图书馆的数据库。由于它们可以多次使用,并且包含的数据不仅仅是名称,所以我有一个作者表。然后是 Books 的 table 。我可以通过名为 Author_id 的列将作者链接到书籍。
我想要做的是有一个名为 Author_IDs 的列,其中包含一个 ID 列表,因为一本书可以有多个 ID。在 Author_IDs 列中,我有:
<id>3478</id>
<id>6456</id>
使用 MySQL 中的 ExtractValue 函数,我可以使用以下方法将表与一个或另一个 ID 链接: WHERE Author.id = ExtractValue(Book.Author_IDs,"/id[2]")//获取第二个 ID。
我的问题是,我希望能够自动显示一本书的所有作者,但不知道如何在不循环的情况下多次链接到它。我怎样才能得到显示所有作者的结果?
(或者是否有更好的方法来完成这个?)
最佳答案
首先,我必须对您的存储方法投反对票。如果可能,应避免将数据作为 xml 存储在 mysql 列中。如果您使用常规方法,您会发现这个问题要容易得多。
创建表:
图书作者
book_id author_id
------- ---------
1 1
1 2
1 3
2 2
2 4
然后要获取与某本书相关联的所有作者,这是一个简单的查询。
Select
b.book_id,
b.book_name,
GROUP_CONCAT(a.author_name) AS 'authors'
FROM
book_authors ba LEFT JOIN
books b ON ba.book_id = b.book_id LEFT JOIN
authors a ON ba.author_id = a.author_id
GROUP BY
ba.book_id
关于mysql - 如何从列中存储为 XML 的列表中链接带有 id 的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8916289/