首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -如何连接多个表

MySQL -如何连接多个表
EN

Stack Overflow用户
提问于 2014-02-18 20:06:29
回答 3查看 87关注 0票数 0

我有一个MySQL数据库,有三个表:艺术家、流派和genre_artist。我需要一个MySQL查询,它为我提供了一个特定类型的所有艺术家。让我们说“摇滚”。我在加入MySQL表格方面没有那么丰富的经验,所以有人能帮我吗?

我的表行如下:

艺术家:

代码语言:javascript
复制
artist_id (int, ai, pk)
artist_name(varchar)
artist_image(varchar)

体裁:

代码语言:javascript
复制
id, (int, ai, pk)
name (varchar)
parent_id (int)

genre_artist:

代码语言:javascript
复制
genre_artist_id (int, ai, pk)
genre_id (int)
artist_id (int)

有谁能帮我吗?

提前谢谢..。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-18 20:10:59

代码语言:javascript
复制
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';
票数 0
EN

Stack Overflow用户

发布于 2014-02-18 20:08:14

代码语言:javascript
复制
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'
;
票数 0
EN

Stack Overflow用户

发布于 2014-02-18 20:09:53

假设您在$genreId中有rock id,您可以使用一个子查询

代码语言:javascript
复制
$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,并且在错误的模式下使用thge表,则可以将表锁定的时间比所需的时间长,这会造成缓慢的性能。注意: Subqueries的可能性较小,mysql的旧版本不支持它(不知道最近的版本)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21864195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档