如何创建这个非常复杂的mysql查询

时间:2016-04-08 12:46:07

标签: mysql sql mysqli concat

我在为以下内容创建正确的查询时遇到了严重问题: - 我有3张桌子。

  1. 作者(author_id(int),author_name(varchar)),

  2. 图书(book_id(int),book_title(varchar))

  3. 贡献(book_id(int),author_id(int),prec(double)) - 用于存储百分比作者参与创建特定图书的深度。 (所以一本书可能有一位以上的作者)

  4. 传说中的难度(对我来说)查询必须向数据库询问book_id,book_title,并在第三列中指定书籍的所有作者与逗号连接并按参与的重复性排序。因此,我在查询结果中有尽可能多的行,就像我在书籍表中有多本书一样,每本书都要获得标题,第三列中有作者。但是怎么可能这样的mysql查询伪造?感谢你们对我的帮助!

    (我有基本的SQL语言知识,基本功能,关键词,但我无法打造正确的查询)

1 个答案:

答案 0 :(得分:0)

第3个表(名称)和连接标准上有点模糊,但这应该很接近......

这里的关键是函数group_Concat(),它允许您根据值按组将多个行组合成一个。此外,group_Concat函数允许您定义分隔符和顺序。

SELECT B.Book_ID
     , B.Book_Title
     , group_concat(A.Author_name order by ABP.Prec Desc separator ', ') as Authors
FROM Author_Book_Percent ABP
INNER JOIN AUTHORS A
  on ABP.Author_ID = A.Author_ID
INNER JOIN BOOKS B
  on ABP.Book_ID = B.Book_ID
GROUP BY B.Book_ID, B.Book_Title