试图创建一个简单的视图,将总数保持在一行。这里的诀窍是我想从多个表中获取这些总数。
这样我就可以选择那一行来获取我想要跟踪的一堆东西的总数。
到目前为止,我无法让这个工作,并且这类事情的大多数帖子都与连接有关。
CREATE VIEW stats AS
select COUNT(DISTINCT publisher.name) as totalPublisher,
select COUNT(DISTINCT series.name) as totalSeries
From
publisher,
series
您可以在SELECT
中使用子查询:
CREATE VIEW stats AS
select (select COUNT(DISTINCT p.name) from publisher p) as totalPublisher,
(select COUNT(DISTINCT s.name) from series s) as totalSeries;
注意:表中的名称很可能是不同的。如果是这样,那么做更有效:
CREATE VIEW stats AS
select (select count(*) from publisher p) as totalPublisher,
(select count(*) from series s) as totalSeries;
[...]简单的视图,将总数保持在一行[...]
你所描述的并不简单;它涉及计算不同记录集的总数。这是必要的,复杂的查询将不同的记录集合在一起。
你是正确的,连接是一个很好的方法(一个原因是它告诉RDBMS你想要什么结果而不是如何得到它)。但是在你给出的具体例子中,你试图在一行中汇总的值之间显然没有相关性。
另外一种方法是:
CREATE VIEW stats AS
SELECT
COUNT (SELECT DISTINCT name FROM publisher) AS total_publisher,
COUNT (SELECT DISTINCT name FROM series) AS total_series