【发布时间】:2022-01-22 18:49:50
【问题描述】:
[如果这个问题已经在其他地方得到回答,我会很感激地把这个链接删除]
我有一个播放列表:
pid | name
1 | playlist 1
2 | playlist 2
3 | playlist 3
还有一张歌单:
sid | name
1 | song 1
2 | song 2
3 | song 3
他们与这个联结表有联系:
pid | sid
1 | 1
1 | 2
1 | 3
2 | 2
3 | 1
我已经设法让加入工作
SELECT playlists.pid, songs.*
FROM playlists
INNER JOIN playlist_contains_song
ON playlists.pid = playlist_contains_song.pid
INNER JOIN songs
ON playlist_contains_song.sid = songs.sid;
这给了我这个结果:
pid | sid | name
1 | 1 | song 1
1 | 2 | song 2
1 | 3 | song 3
2 | 2 | song 2
3 | 1 | song 1
现在我想知道是否有办法“水平”获取这些数据。 首选输出应如下所示:
pid | 1 | 2 | 3
1 | 1 | 1 | 1
2 | 0 | 1 | 0
3 | 1 | 0 | 0
列是 sid,值代表真或假,无论歌曲是否在播放列表中。
提前致谢!
【问题讨论】:
标签: sql postgresql join select junction-table