【问题标题】:How to create this very complex MySQL query如何创建这个非常复杂的 mysql 查询
【发布时间】:2016-07-29 17:39:50
【问题描述】:

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

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

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

  3. contribution(book_id(int)、author_id(int)、prec(double))——用于存储作者参与特定书籍创作的深度百分比。 (所以一本书可能有不止一位作者)

传奇的难度(现在对我来说)查询必须向数据库询问 book_id、book_title 和第三列中指定书籍的所有作者,用逗号连接并按参与百分比排序。因此,查询结果中的行数与 books 表中的书数一样多,并且对于每本书,我必须在第三列中获取标题和作者。但是这样的mysql查询怎么可能伪造呢?感谢你们对我的帮助!

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

【问题讨论】:

  • 尝试更好地格式化您的文本。还要添加示例表数据和预期结果,以及您当前的查询尝试。
  • Group_Concat() 可让您根据分组和排序结果将多行合并为一个...百分比可能适合您的查询。

标签: mysql sql mysqli concat


【解决方案1】:

第三张表(名称)和连接条件有点模糊,但这应该很接近......

这里的关键是函数 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

【讨论】:

  • 不可能容易..我也一样,我应该成功了! :) 你的好意!
  • 很简单,但前提是您了解 Group_Concat() 函数!
  • 我知道这个功能,但只是一般...我不知道我可以使用这样的命令。再来一次!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
  • 2012-04-16
  • 2014-07-04
  • 2016-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多