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

问题描述:

我有一个用户表,书籍表和作者表。作者可以有很多书,而用户也可以有很多书。 (这是我的数据库当前如何设置)。由于我很新到目前为止,我的设置就像访问作者页面的bookview.php?book_id=23,然后查看作者的所有书籍。单个图书的详细信息都显示在这个新页面上...我可以得到输出以显示与图书相关的用户标识,但不显示用户名,这也适用于作者姓名,我可以将作者标识显示,而不是名字,所以某处查询下面我不是在正确的价值观呼唤:MySQL调用用户名来显示而不是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

看起来你只是忘了在你的select语句中包含这些列。我们可以很容易地为你添加它们,但是你必须告诉我们这些桌子是怎么样的:) – Wolph 2010-03-17 02:23:58

+0

哇,我是个白痴还是不是!哦,亲爱的,对不起哈哈,我花了一个小时试图做到这一点!我知道我很接近:) – Jess 2010-03-17 02:28:34

+0

你可以删除这个问题 - 没有声誉惩罚。链接位于您的用户名左侧,位于标签下方。 – 2010-03-17 02:31:10

如果我添加的名称字段进入选择查询这将有助于:d

这两个连接在一起:

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其中,在面对这个不成立。当然,你发布的代码不是你实际使用的代码......?

我认为正确的连接条件会是这样(粗体变化)

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