从连接表获取数据,内部联接
问题描述:
我有以下四个表:从连接表获取数据,内部联接
订阅:
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的那本书吗?
答
这是你的初始查询的修改版本,将返回genre_name
:
- 我加了场genre_name
在SELECT
部分
- 我添加表别名,使其更易于阅读
- 我加2 INNER JOIN
:一个表book
和book_to_genre
之间,表格book_to_genre
和Genre
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";
+0
对我很好 – Drew
我没有看到所谓的'user'任何领域。这是什么意思?而你的第二个要求听起来像是一个完全不同的查询。 –
更好地添加所有需要的东西'(表格结构+样本输入+预期输出)' – 1000111
@timbiegeleisen:我的不好,我不是很清楚。当我们引用表订阅时,用户被称为订阅者。至于我的第二个要求,这不是一个不同的查询。对于每个用户,我都会得到他借来的这本书的名字。这本书有一个流派(表book_to_genre)。这个流派有一个名字(表流派)。我想要借用每本书的流派名称。 –