我有以下四个表:
订阅:
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_name,该书的Genre.genre_id = book_to_genre.genre_id,该怎么办?
答案 0 :(得分:1)
以下是初始查询的修改版本,该版本将返回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";