MusicBrainz SQL查询

时间:2015-01-10 14:37:47

标签: postgresql musicbrainz

我正在使用musicbrainz.org postgresql数据库,我在本地安装并通过pgAdmin访问。

数据库是音乐艺术家和相关标准的列表。架构Here

可以列出艺术家可能拥有的各种关系。例如。 Here是麦当娜关系的链接,其中包括麦当娜维基百科页面和她的推特手柄等链接。

如何创建可输出给定艺术家所有关系的SQL查询?我试过了:

SELECT 
  url.url, 
  artist.name
FROM 
  musicbrainz.artist, 
  musicbrainz.url, 
  musicbrainz.link
WHERE 
  url.id = artist.id
ORDER BY
  url.url ASC;

但是,这些链接与正确的艺术家无关。我使用了错误的密钥吗?

1 个答案:

答案 0 :(得分:2)

我看了一下模型,你错过了l_artist_url表:

SELECT url.url,
       artist.name
FROM artist
  JOIN l_artist_url ON artist.id = l_artist_url.entity0
  JOIN url ON url.id = l_artist_url.entity1
WHERE artist.name = '...'
ORDER BY url.url ASC

要获得与艺术家相关的事件,您可以使用以下内容:

SELECT event.name, 
       event_type.name
FROM artist
  JOIN l_artist_event ON artist.id = l_artist_event.entity0 
  JOIN event ON event.id = l_artist_event.entity1 
  join event_type ON event_type.id = event.type 
WHERE artist.name = '...'