Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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_View_H2 - Fatal编程技术网

Sql 一列中有多列

Sql 一列中有多列,sql,view,h2,Sql,View,H2,我有一个数据库来管理我的音乐库,我把所有的id3标签都存储在DB表中。数据模型如下所示: 因此,我在不同的实体中拥有曲目、专辑和艺术家,曲目和艺术家之间存在n:m关系,因为一个曲目可以由多个艺术家演唱,而一个艺术家可以在多个曲目中演唱。我这样做是为了寻找艺术家的足迹。 但是为了获得一个好的轨迹视图,我希望所有这些艺术家在每条轨迹上都排成一行,这是我到目前为止还没有做到的。我所能做的就是加入唱片公司,每个唱片公司都有一位唱片艺术家: create or replace view v_c_track

我有一个数据库来管理我的音乐库,我把所有的id3标签都存储在DB表中。数据模型如下所示:

因此,我在不同的实体中拥有曲目、专辑和艺术家,曲目和艺术家之间存在n:m关系,因为一个曲目可以由多个艺术家演唱,而一个艺术家可以在多个曲目中演唱。我这样做是为了寻找艺术家的足迹。 但是为了获得一个好的轨迹视图,我希望所有这些艺术家在每条轨迹上都排成一行,这是我到目前为止还没有做到的。我所能做的就是加入唱片公司,每个唱片公司都有一位唱片艺术家:

create or replace view v_c_tracks as SELECT t.traCK_ID,t.title,ar.arTIST,a.album 
FROM TRACKS t 
join albums a on t.album_id=a.album_id
join artists ar on a.albumartist=ar.artist_id 
order by t.title;
您需要加入track_Artisters表。然后,要获得单行的结果,需要按轨迹进行聚合。将艺术家聚集在一个列表中的关键是group_concat:


您使用的数据库是mysql、postgres等?另外,请不要发布指向模式图像的链接:发布格式为codei的模式使用基于java的数据库。我应该发布sql create table语句吗?如果你指的是图片功能,我不能使用它,因为我需要一个声誉分数为10。张贴图像也。只需将create语句复制粘贴到您的问题中作为文本。非常感谢,这就是我所需要的!小组会议很好
create or replace view v_c_tracks as SELECT t.traCK_ID,t.title,ar.arTIST,a.album 
FROM TRACKS t 
join albums a on t.album_id=a.album_id
join artists ar on a.albumartist=ar.artist_id 
order by t.title;
SELECT t.traCK_ID, t.title, group_concat(ar.artist) as artists, a.album 
FROM tracks t join
     albums a
     on t.album_id = a.album_id join
     track_artists ta
     on ta.track_id = track.track_id join
     artists ar
     on ta.artist_id = ar.artist_id 
group by t.traCK_ID, t.title, a.album
order by t.title;