从连接表获取数据,内部联接

问题描述:

我有以下四个表:从连接表获取数据,内部联接

订阅:

book_id, duration, subscriber 

书:

book_id, book_name 

类型:

genre_id, genre_name 

book_to_genre:

genre_id, book_id 

对于某个用户(订阅者)我想从订阅中获取所有行。书名应该从表Book中提取。我知道这是有内进行联接:

SELECT Book.book_name, Subscription.duration from Subscription INNER JOIN Book on Subscription.book_id = Book.book_id where Subscription.subscriber = "somevalue"; 

如果我想从表类型,其中Genre.genre_id = book_to_genre.genre_id取GENRE_NAME的那本书吗?

+1

我没有看到所谓的'user'任何领域。这是什么意思?而你的第二个要求听起来像是一个完全不同的查询。 –

+0

更好地添加所有需要的东西'(表格结构+样本输入+预期输出)' – 1000111

+0

@timbiegeleisen:我的不好,我不是很清楚。当我们引用表订阅时,用户被称为订阅者。至于我的第二个要求,这不是一个不同的查询。对于每个用户,我都会得到他借来的这本书的名字。这本书有一个流派(表book_to_genre)。这个流派有一个名字(表流派)。我想要借用每本书的流派名称。 –

这是你的初始查询的修改版本,将返回genre_name
- 我加了场genre_nameSELECT部分
- 我添加表别名,使其更易于阅读
- 我加2 INNER JOIN :一个表bookbook_to_genre之间,表格book_to_genreGenre

SELECT b.book_name, s.duration, g.genre_name 
FROM Subscription s 
INNER JOIN Book b on s.book_id = b.book_id 
INNER JOIN book_to_genre bg ON b.book_id = bg.book_id 
INNER JOIN Genre g ON bg.genre_id = g.genre_id 
where s.subscriber = "somevalue"; 

文档之间的其他:
- SELECT
- JOIN

+0

对我很好 – Drew