我相当新的Supabase和我试图找到一种方法来结构和检索所有的歌曲从艺术家的用户如下。
使用下面的代码,我可以检索用户关注的所有艺术家。我通过将userid存储在一个数组(param1 = userid)中来实现这一点
create or replace function getArtists(param1 text) returns setof artists as $$
select *
from "artists"
where param1 =ANY(artistFollowers);
$$ language sql;
然而,我无法找到一种方法来检索用户关注的所有艺术家的歌曲。
create or replace function getAllSongs(param1 text) returns setof songs as $$
select *
from "artists"
where param1 =ANY(artistFollowers)
inner join songs on artist.artistid == songs.artistid
$$ language sql;
简化表格结构。
artists TABLE
_id SERIAL,
artistname character(40),
artistFollowers ARRAY[userid1, userid2, userid3]
artistid character(40)
songs TABLE
_id SERIAL,
songname character(40),
artistid character(40)
1条答案
按热度按时间nfeuvbwi1#
在关系数据库中,我们使用连接表来存储相关表的id,而不是使用数组来存储相关表的id。您可以在这里阅读更多信息,但您可以创建一个类似于这样的表,其中该表同时引用arts表和users表。您没有users表的定义,但我假设您在这里有一个公共users表。
每当用户关注一个新艺术家时,您就在此表中插入一个新行,其中包含artist_id和user_id。
现在,当您想要检索用户关注的艺术家创建的歌曲列表时,可以使用类似这样的数据库函数来查询它。