显示外键引用值 Postgresql

Displaying Foreign Key Referenced value Postgresql

我有 3 个 table: musiccollection: id (pk), title, artist..等等等等 musiccollection_playlist: mcpid (pk), playlistid (fk:playlist.playlistid), trackid(fk:musiccollection.id) playlist: playlistid (pk), playlistname

我想显示 musiccollection 中的整行,如 musiccollection_playlist table 各自的外键所示。

例如。在音乐收藏中 table

id    title    artist 
1     song1    artist1
2     song2    artist2
3     song3    artist3
4     song4    artist4
5     song5    artist5

例如。在播放列表中 table

playlistid    playlistname
1             playlist1
2             playlist2

例如。在 musiccollection_playlist

mcpid    playlistid    trackid
1        1             2
2        1             4
3        1             5

现在我想显示 musiccollection_playlist WHERE playlistid 为 1 的数据(一般示例)。但是我希望返回的数据是 music_collection table 中的实际行,其中选择的 id 为 2,4,5.

我正在尝试编写查询:

SELECT * FROM musiccollection as a, musiccollection_playlist as b WHERE a.id IN (SELECT trackid FROM musiccollection_playlist) AND b.playlistid = '1'

我一定是推理有误,或者我的查询有问题。 我该如何解决这个问题以实现我想要的?即显示由 musiccollection_playlist.

中的 trackid 标识的整行

实际上我可以这样做:

SELECT trackid FROM musiccollection_playlist WHERE playlistid = '1'

然后 trackid 必须从 musiccollection table.

中引用

你有什么建议?

您的情况:

WHERE a.id IN (SELECT trackid FROM musiccollection_playlist)

只会将结果限制为任何播放列表中的每首曲目。

我认为您需要查看 joins 上的文档。他们可以让生活变得更简单:

SELECT a.* FROM musiccollection a INNER JOIN musiccollection_playlist b ON
  a.id = b.trackid
WHERE b.playlistid = '1';