Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将多对一关系的多方面合并到一个领域?_Sql_Sqlite - Fatal编程技术网

Sql 将多对一关系的多方面合并到一个领域?

Sql 将多对一关系的多方面合并到一个领域?,sql,sqlite,Sql,Sqlite,两个表格:书籍和作者。一本书可以有许多作者,就像一本短篇小说选集 书 作者 书籍作者链接 我想做的是返回一个表,其中每一行都是一本书,“authors”字段是一个逗号分隔的所有作者列表,例如 查询结果 我一直在玩groupby和串联函数,我知道答案就在那里,但我就是不太明白。我可以通过在我的程序中处理数组和字符串连接来实现这一点,但这不是我正在寻找的优雅解决方案。这里的提示将不胜感激 如果SQLite 3依赖于系统,我将使用它。您必须将两个表连接起来,一本一本地分组,并在author name列

两个表格:
书籍
作者
。一本书可以有许多作者,就像一本短篇小说选集

书 作者 书籍作者链接 我想做的是返回一个表,其中每一行都是一本书,“authors”字段是一个逗号分隔的所有作者列表,例如

查询结果 我一直在玩
groupby
和串联函数,我知道答案就在那里,但我就是不太明白。我可以通过在我的程序中处理数组和字符串连接来实现这一点,但这不是我正在寻找的优雅解决方案。这里的提示将不胜感激


如果SQLite 3依赖于系统,我将使用它。

您必须将两个表连接起来,一本一本地分组,并在author name列上应用一个
group\u concat

该功能的官方文档如下所示

id    |    title
--------------------
1        The Time Machine Did It
2        Snakes in Suits
3        Ghost in the Wires
id    |    name
------------------------
1        Stephen King
2        John Swartzwelder
3        Robert D. Hare
4        Kevin Mitnick
5        William L. Simon
6        Steve Wozniak
7        Paul Babiak
book_id    |    authors_id
---------------------------
1                2
2                3
2                7
3                4
3                5
3                6
title                    |    authors
---------------------------------
The Time Machine Did It    John Swartzwelder
Snakes in Suits            Robert D. Hare, Paul Babiak
Ghost in the Wires         Kevin Mitnick, William L. Simon, Steve Wozniak