0

次のテーブルがあります。


テーブル名-----| テーブル フィールド

本 --------------| book_id、book_title

著者 ---------- | 著者ID、著者名

書籍の著者 - | author_id、book_id

ユーザー ------------- | ユーザーID、ユーザー名

コメント -------- | comment_id、コメント

コメント_ユーザー | comment_id、user_id、book_id、日付


本のタイトル、著者、およびこの本に投稿されたすべてのコメントを表示する必要があります (ユーザー名、日付、コメントを表示する必要があります)。私は2つの異なるSQLクエリでそれを行いますが、1つのクエリだけでそれを行う方法がわかりません. 2 つのクエリを次に示します。

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

これは、ユーザー名、コメント、およびコメントが投稿された日付を返します。それらを1つのクエリに結合する方法を誰かに説明してもらえますか? 前もって感謝します

4

2 に答える 2

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
于 2013-10-20T14:56:23.047 に答える
1

2 つのクエリからすべてのテーブルを結合することはできませんか?

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

これがあなたが達成しようとしていることを願っています。

于 2013-10-20T14:55:34.763 に答える