查询查询

时间:2014-04-15 13:52:24

标签: sql

我有更多使用Access的经验,我会在小部件中构建我的分析并查询每个新视图。

我不是想在SQL中做一些简单的事情。

如果我查询格式:

SELECT events.people, COUNT(events.eventType) AS usersAndEventCount
FROM theDB.events
WHERE event_id = 884
GROUP BY people

然后我想查询usersAndEventCount 像这样:

Select usersAndEventCount.people, usersAndEventCount.events
FROM [from where actually?]

试过:

usersAndEventCount;
events
theDB.events

对于SO上的SQL用户来说,这似乎是非常基本的。但在我看来,将较大的查询细分为这些子查询要容易得多。

如何在同一查询中查询usersAndEventCount?

3 个答案:

答案 0 :(得分:4)

您的声明“然后想查询usersAndEventCount ”没有意义,因为usersAndEventCount - 至少在您的第一个示例中。您无法“查询”列。

但是从你给出的例子来看,你似乎想要这样的东西:

Select usersAndEventCount.people, usersAndEventCount.events
FROM (
  SELECT events.people, 
         COUNT(events.eventType) AS as events
  FROM theDB.events
  WHERE event_id = 884
  GROUP BY people  
) as usersAndEventCount

这在SQL

中称为“派生表”

答案 1 :(得分:3)

在纯SQL中,您可以使用嵌套查询(AKA子查询)。只需将您的第一个查询括在()括号中,这样您的查询就会如下所示:

Select usersAndEventCount.people, usersAndEventCount.events
FROM (SELECT events.people, COUNT(events.eventType) AS events
      FROM theDB.events
      WHERE event_id = 884
      GROUP BY people) usersAndEventCount

或者,要保存第一个查询并在Access中进行多次重复使用,可以将其另存为View或Stored Procedure,具体取决于您使用的数据库系统。如果您想要一个示例,请告诉我您正在使用的数据库系统。

答案 2 :(得分:1)

我不确定每100%,因为目前我无法测试。但我认为它应该有效。 uaec是子查询的别名。您可以在主查询中使用此别名

Select uaec.people, uaec.usersAndEventCount
FROM (SELECT events.people, COUNT(events.eventType) AS usersAndEventCount
FROM theDB.events
WHERE event_id = 884
GROUP BY people) uaec