首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个查询还是可以一次完成?

多个查询还是可以一次完成?
EN

Stack Overflow用户
提问于 2016-06-29 16:13:40
回答 2查看 480关注 0票数 0

我在更高级的MySQL查询方面不是很有经验。(主要是基本查询、返回和解析response..etc)

但是..。当我需要数据库中的多个事物(响应)时,我不清楚正确的方法。有办法从单个查询中获取这些信息吗?还是每次都需要执行新的查询?

背景:我使用PDO来执行SELECT语句

ie:

代码语言:javascript
复制
$getAllVideos_sql = "SELECT * as FROM $tableName WHERE active IS NOT NULL OR active != 'no' ORDER BY topic, speaker_last, title;";
$getAllVideos_stmt = $conn->prepare($getAllVideos_sql);
$getAllVideos_stmt->execute();
$getAllVideos_stmt->setFetchMode(PDO::FETCH_ASSOC);
$results = $getAllVideos_stmt->fetch(PDO::FETCH_ASSOC);

//parse as I see fit

这给了我我的“数据块”,我可以分割和显示我想要的。

但是..。我也希望能给出一些统计数据(总计)。

关于全部(不同的)“主题”。以及“标题”的总数(默认情况下应该是唯一的)

我是否需要执行另一个查询,准备,执行,setFetchMode,重新获取?

这样做合适吗?或者是否有一种方法可以关闭已经在运行的初始命令?

说清楚,我并不是真的在找查询.我想了解一个人做这件事的正确方式当他们像我一样需要几条数据的时候?多个查询和executions..etc?

或者可以对查询本身进行调整以返回子select/ query?

  • 这不是正确的语法,因为它只返回1条记录.(但总主题计数似乎是正确的,尽管我只返回了1条记录) 选择*,计数(不同的主题)为totalTopics,计数(不同的标题)为totalTitles从$tableName;

也许这是更合适的方法?尝试将这些总计/详细信息包含在要选择的主查询中?

希望这是有意义的。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-29 16:34:10

我不认为你会得到任何非常干净的东西来做这件事,然而,像这样的事情可能会奏效:

代码语言:javascript
复制
SELECT * from $Table t
INNER JOIN (
    SELECT COUNT(DISTINCT Topic) as TotalTopics FROM $Table 
) s ON 1 = 1
INNER JOIN (
    SELECT COUNT(DISTINCT Title) as TotalTitles FROM $Table 
) f ON 1 = 1
WHERE ( Active IS NOT NULL ) AND Active != 'no'
票数 1
EN

Stack Overflow用户

发布于 2016-06-29 16:33:21

特别是在web应用程序中,很多人会定期进行计数或其他聚合。有时,如果它是一个全局上下文,例如所有用户的所有主题,那么让一些存储的聚合帮助而不是每次请求所有记录计数。

举例说明。如果您有一个包含“主题”列表的表,那么在其中有一个用于uniqueTitleCount的列。然后,基于触发器,当一个新标题被添加到一个主题中时,计数会通过添加1自动更新。您可以通过对所述“主题”表执行相关更新来预先填充该列,然后一旦设置触发器,您就可以只使用该列。

这也适用于我多次看到人们想要的“最近的”。如果您的系统在表中有自动增量ID,类似地,为给定的主题创建了最近的ID,甚至为给定的标题/文档/线程创建了最近的ID,这样您就不必一直做类似的事情了。

代码语言:javascript
复制
select documentID, other_stuff
   from sometable 
   where documentID in ( select max( documentID ) 
                           from sometable 
                           where the title = 'something' )

使用这些有意义的地方,那么您的优化拉下来变得更容易处理。你甚至可以有一个计数器每个文件的“标题”,甚至最近的发布日期,以便他们可以迅速排序,根据兴趣,活动的频率,无论什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38105022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档