2016-07-14 24 views
0

我有以下四個表:從連接表獲取數據,內部聯接

訂閱:

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)。這個流派有一個名字(表流派)。我想要借用每本書的流派名稱。 –

回答

1

這是你的初始查詢的修改版本,將返回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