2013-07-05 80 views
0

我正在学习使用从我的PHP/SQL驱动的CMS网站下载的教科书和数据库(因为像某人建议的那样,我了解各种查询结果应该是什么样子)。查询查询 - 第一次

我更熟悉MS Access,我会创建查询,保存它们然后对它们运行查询。这使我能够将更大的数据分析任务分解为更小,更容易理解的部分。

无论如何,SQL会话的目标是在我的电子邮件数据库中找到收到最多电子邮件的十个人。以下查询提供了发送到电子邮件地址的每个电子邮件实例:

SELECT alert.alert_recipient,alert_sent.id 
FROM alert 
INNER JOIN alert_sent 
ON alert_sent.alert_id=alert.id 

现在,我想查询上述查询。如果上面的查询的结果是一个表我想沿着东西线(I“马福利局和语法可能是错误的):

SELECT COUNT(DISTINCT alert_recipient, ID) FROM myqueryabove 
ORDER id DESC 
LIMIT 10; 

我问以前的帖子这个问题,并给出了答案给了我一个查询来覆盖它所有,并在一个查询中产生结果

我现在问这个问题涉及到的方法与一个大查询相反,我可以将第一个查询保存为“query_1_all_emails”,然后像查询表一样查询它(就像我在Access中那样)?如果可以,这是好还是常见的做法?

+2

查看视图 - 这些应该是您所追求的内容。 –

回答

1

“查询查询”的方法包括de:

创建一个视图。 使用派生表,也就是带有别名的子查询。这是如何工作的:

select count(distinct alert_recipient, id) 
from (SELECT alert.alert_recipient,alert_sent.id 
FROM alert 
INNER JOIN alert_sent 
ON alert_sent.alert_id=alert.id) temp 
order id desc 
limit 10 

或者,你可以用这个sql创建一个文本文件。

SELECT alert.alert_recipient,alert_sent.id 
FROM alert 
INNER JOIN alert_sent 
ON alert_sent.alert_id=alert.id 
order id desc 
limit 10 

并将其复制并粘贴到您的查询工具中,只要您想运行它即可。或者,一些查询工具将允许您保存查询文件,以便您可以随时运行它们。

+0

感谢您的信息,我也喜欢保存我的查询的想法 –

2

您可以使用视图或将第一个查询的结果保存在临时表中,然后查询该视图/表。但是,检索您所查询信息的最佳方法似乎是只使用一个查询,如下所示:

select 
    count(*), 
    alert_recipient 
from 
    alert 
group by alert_recipient 
order by 1 desc 
limit 10;