【发布时间】:2016-05-08 07:46:20
【问题描述】:
这里我只为我的课程做一个图书馆管理项目。我目前有三个表
(书籍,作者,book_authors)
books 和authors 之间有多对多关系,book_author 是一个中间表
这是我的 book_author 表。在这里你可以看到 id=1 的书是由两位作者写的。我愿意做的是每当我拿那本书时,我希望书名只重复一次。
我正在使用以下查询来获取书名和作者姓名
SELECT DISTINCT books.title, authors.author_name FROM (books INNER JOIN book_author ON books.ID=book_author.book_id ) INNER JOIN authors ON authors.ID=book_author.author_id WHERE books.ID=1
结果如下。这里的标题重复了两次,这很明显。但我只想重复一次标题,但也要显示两个作者姓名。我怎么能做到这一点?
【问题讨论】:
-
您打算如何向您的用户展示这些数据?
-
我希望标题只显示一次,但两位作者都会显示。否则用户可能会认为它们是来自具有相似名称的两个不同作者的两本不同的书
-
数据显示问题最好在表示层解决,如果可用的话,例如PHP(或者可能是 ASP 或 VB)中的一个简单循环
-
另外,请注意此表中的 ID 列没有任何作用。
-
使用此 SELECT 您会收到不同的书籍和作者组合。此外:除非将它们组合在一个函数中,通常是一个 UDF,否则您永远不会从两行中获取数据。
标签: mysql sql vb.net ms-access