MusicBrainz SQL 查询
MusicBrainz SQL query
我正在使用 musicbrainz.org postgresql 数据库,我已在本地安装并通过 pgAdmin 访问。
该数据库是音乐艺术家和相关标准的列表。 Here 是架构。
可以列出艺术家可能拥有的各种关系。例如。 Here 是 link 麦当娜的人际关系,其中包括 link 麦当娜的维基百科页面和她的推特句柄等。
如何创建一个 SQL 查询来输出给定艺术家的所有关系?我试过:
SELECT
url.url,
artist.name
FROM
musicbrainz.artist,
musicbrainz.url,
musicbrainz.link
WHERE
url.id = artist.id
ORDER BY
url.url ASC;
但是,这些 link 与正确的艺术家没有关联。我是不是用错了钥匙?
我看了模型,你漏了 l_artist_url table:
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 = '...'
我正在使用 musicbrainz.org postgresql 数据库,我已在本地安装并通过 pgAdmin 访问。
该数据库是音乐艺术家和相关标准的列表。 Here 是架构。
可以列出艺术家可能拥有的各种关系。例如。 Here 是 link 麦当娜的人际关系,其中包括 link 麦当娜的维基百科页面和她的推特句柄等。
如何创建一个 SQL 查询来输出给定艺术家的所有关系?我试过:
SELECT
url.url,
artist.name
FROM
musicbrainz.artist,
musicbrainz.url,
musicbrainz.link
WHERE
url.id = artist.id
ORDER BY
url.url ASC;
但是,这些 link 与正确的艺术家没有关联。我是不是用错了钥匙?
我看了模型,你漏了 l_artist_url table:
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 = '...'