2008-12-11 85 views
1

Postgres里我相当肯定,你可以做这样的事情MySQL的 - 另一个查询中嵌入数查询

SELECT 
    authors.stage_name, 
    count(select id from books where books.author_id = authors.id) 
FROM 
    authors, 
    books; 

从本质上讲,在这个例子中,我想回的作者名单,有多少书各有书面....在相同的查询。

这可能吗?我怀疑这种做法是相当幼稚..

谢谢:)

回答

1

嗯,首先,它返回所有作者的笛卡尔乘积中的所有图书,无论该作者是否写了这本书。

以下是我会写一个查询来获取你说你想要的结果:

SELECT a.stage_name, COUNT(b.id) 
FROM authors a 
    LEFT OUTER JOIN books b ON (a.id = b.author_id) 
GROUP BY a.id; 

你需要学习如何写,如果你使用SQL连接查询。加入到SQL是什么循环到应用程序编程语言。即这是一个你需要知道的基本编程构造。

0

如何使用连接:

SELECT authors.stage_name, count(*) 
FROM authors INNER JOIN books on books.author_id = authors.id 
GROUP BY authors.stage_name