2013-10-20 121 views
0

我有以下表格:mysql如何得到兩個結果與來自不同表的一個查詢


表名 ----- | 表字段

books ------------- | book_id,book_title

作者---------- | author_id,author_name

books_authors - | author_id,book_id

users ------------- | user_id,user_name

評論-------- | comment_id,評論

comments_users | COMMENT_ID,USER_ID,book_id,日期


我需要顯示的書名,它的作者,並張貼了這本書的所有意見(我需要顯示的用戶名,日期,評論)。 我做了兩個不同的SQL查詢,但我不知道如何做只有一個查詢。 這裏有兩個查詢:

SELECT * FROM books 
INNER JOIN books_authors 
ON books.book_id=books_authors.book_id 
INNER JOIN authors 
ON books_authors.author_id=authors.author_id 
WHERE books.book_id=7 

這個方法返回的名稱和書ID = 7的作者。

SELECT `user_name`, `comment`, `date` 
FROM comments_users 
INNER JOIN comments ON comments_users.comment_id = comments.comment_id 
INNER JOIN users ON comments_users.user_id = users.user_id 
WHERE comments_users.book_id=7 

這個方法返回的用戶名,評論,日期評論被張貼。 任何人都可以解釋我怎樣才能將它們加入到一個查詢中?在此先感謝

+0

MySQL是不是SQL服務器 – podiluska

回答

2

這種安排查詢應該足夠了,它會顯示結果,只要你想:

SELECT books.book_title, authors.author_name, comments.comment FROM books 
INNER JOIN books_authors 
ON books.book_id=books_authors.book_id 
INNER JOIN authors 
ON books_authors.author_id=authors.author_id 
LEFT JOIN comments_users ON comments_users.book_id = books.book_id 
INNER JOIN comments ON comments_users.comment_id = comments.comment_id 
INNER JOIN users ON comments_users.user_id = users.user_id 
WHERE books.book_id=7 
+0

但我發現自己如何做到這一點(你的回答幾乎是一樣的),我想這是最好的答案。 –

1

難道你不能只加入這兩個查詢中的所有表?

SELECT `books.book_id`, `books.book_title`, `comments_users.user_name`, 
`comments_users.comment`, `comments_users.date` 
FROM books 
INNER JOIN books_authors ON books.book_id=books_authors.book_id 
INNER JOIN authors ON books_authors.author_id=authors.author_id 
INNER JOIN comments_users ON comments_users.book_id = books.book_id 
INNER JOIN comments ON comments_users.comment_id = comments.comment_id 
INNER JOIN users ON comments_users.user_id = users.user_id 
WHERE books.book_id=7 

希望這是你想要實現的。

相關問題