MySQL在用户名中调用显示而不是ID?

时间:2010-03-17 02:11:29

标签: mysql inner-join

我有一个用户表,书籍表和作者表。作者可以拥有许多书籍,而用户也可以拥有许多书籍。 (这是我目前设置的数据库)。由于我是新手到目前为止,我的设置就像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;

有人可以帮我纠正这个问题,这样我就可以显示与本书相关的作者姓名和用户名!谢谢你的帮助:)

3 个答案:

答案 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,从表面上看,没有任何意义。当然你发布的代码不是你实际使用的代码......?