我有一个用户表,书籍表和作者表。作者可以拥有许多书籍,而用户也可以拥有许多书籍。 (这是我目前设置的数据库)。由于我是新手到目前为止,我的设置就像bookview.php?book_id=23
访问作者页面,然后看到作者的所有书籍。单书的详细信息都显示在这个新页面上......我可以得到输出以显示与书籍相关联的用户ID,但不显示用户名,这也适用于作者的姓名,我可以将作者ID输入到显示,但不是名称,所以在下面的查询中的某个地方,我没有调用正确的值:
SELECT users.user_id,
authors.author_id,
books.book_id,
books.bookname,
books.bookprice,
books.bookplot
FROM books
INNER JOIN authors on books.book_id = authors.book_id
INNER JOIN users ON books.book_id = users.user_id
WHERE books.book_id=" . $book_id;
有人可以帮我纠正这个问题,这样我就可以显示与本书相关的作者姓名和用户名!谢谢你的帮助:)
答案 0 :(得分:1)
我认为正确的连接条件类似于(更改加粗)
SELECT users.user_id,
**users.user_name,**
authors.author_id,
**authors.author_name,**
books.book_id,
books.bookname,
books.bookprice,
books.bookplot
FROM books
INNER JOIN authors on books.**author_id** = authors.**author_id**
INNER JOIN users ON books.**user_id** = users.user_id
WHERE books.book_id=" . $book_id;
或者您可以对简单的内连接使用较不详细的语法。
SELECT users.user_id,
users.user_name,
authors.author_id,
authors.author_name,
books.book_id,
books.bookname,
books.bookprice,
books.bookplot
FROM books, authors, users
where books.author_id = authors.author_id
and books.user_id = users.user_id
and books.book_id=" . $book_id
答案 1 :(得分:0)
如果我将名称字段添加到选择查询中会有所帮助:D
答案 2 :(得分:0)
这两个连在一起:
INNER JOIN authors on books.book_id = authors.book_id
INNER JOIN users ON books.book_id = users.user_id
也暗示authors.book_id = users.user_id
,从表面上看,没有任何意义。当然你发布的代码不是你实际使用的代码......?