我有一个包含3个表的MySQL数据库:艺术家,流派和genre_artist。我需要一个MySQL查询,它给了我所有艺术家的特定类型。让我们说“摇滚”。我在加入MySQL表方面不是很有经验,所以有人可以帮助我吗?
我的表格行如下:
艺术家:
artist_id (int, ai, pk)
artist_name(varchar)
artist_image(varchar)
类型:
id, (int, ai, pk)
name (varchar)
parent_id (int)
genre_artist:
genre_artist_id (int, ai, pk)
genre_id (int)
artist_id (int)
那么,谁能帮助我?
提前致谢...
答案 0 :(得分:0)
SELECT a.*
FROM
`artists` a
INNER JOIN `genre_artist` ga ON ga.artist_id = a.artist_id
INNER JOIN `genre` g ON g.genre_id = ga.genre_id
WHERE
g.name = 'Rock'
;
答案 1 :(得分:0)
SELECT artists.*
FROM artists join genre_artist on genre_artist.artist_id = artists.artist_id
join genre on genre.id = genre_artist.genre_id and genre.name = 'Rock';
答案 2 :(得分:-1)
假设您在$genreId
中拥有摇滚的ID,您可以使用子查询
$genre_id = mysql_real_escape_string($genreId); // basic protection
$subquery = "SELECT artist_id FROM genre_artist WHERE genre_id = {$genre_id}";
$query = "SELECT * FROM artist WHERE artist_id IN ({$subquery})";
联接对数据库非常有意。如果你没有添加正确的indice并使表格处于错误的模式,你可以锁定更长的表格,这会产生较慢的性能。 小注意:子查询的可能性较小,旧版本的mysql不支持它(不知道更新的版本)