2012-02-09 58 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() )。

反正你的查询应该是这样的:

​​