首页 文章

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

提问于
浏览
-1

我在为以下内容创建正确的查询时遇到了严重的麻烦: - 我有3个表 .

  • authors (author_id(int),author_name(varchar)),

  • books (book_id(int),book_title(varchar))

  • contribution (book_id(int),author_id(int),prec(double)) - 用于存储百分比作者参与创建特定书籍的深度 . (所以一本书可能有一个以上的作者)

而传说中的难度(对我来说)查询必须向数据库询问book_id,book_title,并在第三列中指定书籍的所有作者与逗号连接并按参与的最低顺序排序 . 所以我在查询结果中有尽可能多的行,因为我在书籍表中有很多书,每本书都有我得到的 Headers ,作者在第三列 . 但是怎么可以这样的mysql查询伪造?感谢你们对我的帮助!

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

1 回答

  • 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
    

相关问题