其中id =多位艺术家

pix*_*xel 1 php mysql

任何时候我的音乐社区内有更新(歌曲评论,艺术家更新,新歌添加,yadda yadda yadda),我的"更新"表中会插入一个新行.该行包含艺术家ID以及其他信息(更改类型,时间和日期等).

我的用户有一个"最喜欢的艺术家"部分,他们可以做到这一点 - 标记艺术家作为他们的最爱.因此,我想创建一个新功能,向用户显示对各种喜爱的艺术家所做的更改.

我该如何有效地做到这一点?

SELECT * 
FROM table_updates 
WHERE artist_id = 1 
OR artist_id = 500 
OR artist_id = 60032  
Run Code Online (Sandbox Code Playgroud)

请记住,用户可以将43,000名艺术家标记为收藏.

思考?

eri*_*sco 5

这取决于数据库的设置方式.如果我按照自己的方式行事,我会用这样的表格进行设置:

Table: user_favourite_artist

user_id  |  artist_id
---------------------
1        |  2
1        |  8
1        |  13
2        |  2
3        |  6
6        |  20
6        |  1
6        |  3
Run Code Online (Sandbox Code Playgroud)

user_id和artist_id一起是复合主键.每行按id指定用户(id)和他们作为收藏夹的艺术家.像这样的查询:

SELECT artist_id FROM user_favourite_artist WHERE user_id = 1
Run Code Online (Sandbox Code Playgroud)

会给你artist_id的2,8和13.这是一个非常简单的查询,可以达到你的期望.

相反,当艺术家更新时,您将运行此查询:

SELECT user_id FROM user_favourite_artist WHERE artist_id = 2
Run Code Online (Sandbox Code Playgroud)

并且您将获得user_id的1和2.这将告诉您要通知哪些用户.此查询也很简单,并且可以扩展.