MySQL - 如何连接多个表

时间:2014-02-18 20:06:29

标签: php mysql sql

我有一个包含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)

那么,谁能帮助我?

提前致谢...

3 个答案:

答案 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不支持它(不知道更新的版本)