按外键搜索


Search by foreign key

我正在开发一个允许用户搜索音乐、艺术家、专辑和混音带的应用程序。数据库有这四个表:音乐、艺术家、混音带、专辑。3张桌子;混音带、音乐和专辑与艺术家在名为 artist_id 的列中使用外键有关。使用如下查询很容易从三个表中的每一个获取搜索结果:

$music = "SELECT * FROM music WHERE song_title LIKE '%$search_term%'";

但是,我发现获得专辑,混音带和音乐的结果有点令人生畏,其中artist_name=搜索词,因为艺术家的引用不是按姓名而是按artist_id如何为用户提供的搜索词(即艺术家)返回音乐、专辑和混音带的结果?

您可以使用

inner join来实现此目的

"SELECT * FROM music INNER JOIN artist ON music.artist_id = artist.id WHERE artist.name LIKE '%$search_term%'";

您需要在表之间使用连接,如下所示:

select * from music m
inner join artists a on (m.artist_id = a.artist_id)
where a.artist name like ....