2014-02-28 157 views
1

我必须在我的数据库2表。 首先是author包含(int author_id, text name_of_author)。 第二个是book包含(int book_id, int author_id, text name_of_book, text genre)。 他们通过author_id关联;Mysql计数没有重复

我试图得到一个查询,这将给我列出genre没有重复,以及写在这genre作者的数量。

它应该是这个样子:

GENRE NAME_OF_AUTHERS 
    novel  12 
    poems  4 
    fantasy  20 
    ...   .. 
etc.. 

我尝试做这样的事情:

SELECT DISTINCT A.GENRE, COUNT(B.NAME_OF_AUTHOR) FROM BOOK AS A 
LEFT JOIN AUTHOR AS B 
ON A.AUTHOR_ID = B.AUTHOR.ID; 

但它给了我错误的结果。

+0

那么...你会得到什么结果? :) – Goot

+1

@ user3364458,我认为你在表格格式中犯了一些错误,你会给出一个像name_of_authers这样的名字。但是,我认为no_of_authers。 – jmail

回答

1

如果您只需要为每个流派统计作者数,那么这个简单的查询是不是工作?

mysql> select count(author_id), genre from boook group by genre; 
+0

您的解决方案更简单.. – oki

+0

雅它也工作...它似乎很简单.. – next2u

0

尝试

SELECT 
    COUNT(A.NAME_OF_AUTHOR), 
    B.GENRE FROM AUTHOR AS A 
LEFT OUTER JOIN 
    BOOK AS B 
ON 
    A.AUTHOR_ID = B.AUTHOR.ID 
GROUP BY 
    B.GENRE; 

如果它不工作,发布数据模型和错误或导致你从数据库得到。

+0

谢谢你,这正是我想要的。) – oki

+0

为你而高兴。最后一步:https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – sdespont

+1

这是我的第一篇文章,所以我会牢记.. – oki