2012-02-09 66 views
-2

我試圖完成一個mysql連接的問題。 這是我的代碼:INNER JOIN無法正常工作

SELECT title, books.`author_id`, books.`publisher_id`, books.`format_id`, books.`genre_id`, pages, isbn, description, DATE_FORMAT(release_date, '%M, %d, %Y') 
FROM `books` 
INNER JOIN `authors` ON (`authors`.`author_id`= `books`.`author_id`) 
INNER JOIN `publishers` ON (`publishers`.`publisher_id`= `books`.`publisher_id`) 
INNER JOIN `formats` ON (`formats`.`format_id`= `books`.`format_id`) 
INNER JOIN `genres` ON (`genres`.`genre_id`= `books`.`genre_id`)` 

作者,出版商,格式和風格均與兩列所有單獨的表。作者表格中的author_id和author以及其他作者的相同格式。

無論我做什麼,連接似乎都不起作用,請幫助我查看我出錯的地方。

+5

這是什麼意思不起作用?你有錯誤嗎?沒有結果?什麼? – Vyktor 2012-02-09 14:35:48

+2

-1表示_it不工作_並不是說_how應該工作_。 – Tadeck 2012-02-09 14:37:08

+0

顯示來自author_id的外鍵,而不顯示作者列值。 – jjmorph 2012-02-09 14:40:34

回答

1

的問題是在查詢的選擇部分。

SELECT title, books.`author_id`, books.`publisher_id`, books.`format_id`, books.`genre_id` 

您選擇AUTHOR_ID,PUBLISHER_ID,從書本表從連接表和業態genre_id,並沒有什麼,所以也難怪你缺少你想要的值。

SELECT title, books.`author_id`, authors.`author`, books.`publisher_id`, publishers.`publisher`, books.`format_id`, formats.`format`, books.`genre_id`, genres.`genre` 

這將產生你想要的值,除了id值。

+0

謝謝。對它進行排序。 – jjmorph 2012-02-09 15:03:31

0

我認爲,一旦您開始使用轉義列名稱,您應該堅持使用整個查詢。對於使用前綴列名稱(使用表名)也是如此。

的第二件事是發佈日期,就應該爲它手動聲明名稱與DATE_FORMAT(release_date, '%M, %d, %Y') AS release_date(格式化日期應該是表示層不是模型的物質(從數據庫中獲取),因此outputing時候我會是更好的格式日期date() )。

反正你的查詢應該是這樣的:

​​