2010-03-17 46 views
1

我有一個用戶表,書籍表和作者表。作者可以有很多書,而用戶也可以有很多書。 (這是我的數據庫當前如何設置)。由於我很新到目前爲止,我的設置就像訪問作者頁面的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

回答

0

如果我添加的名稱字段進入選擇查詢這將有助於:d

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其中,在面對這個不成立。當然,你發佈的代碼不是你實際使用的代碼......?

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

相關問題