首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以更干净的方式执行这些MySQL子查询?

问如何以更干净的方式执行这些MySQL子查询?
EN

Stack Overflow用户
提问于 2015-05-03 11:47:32
回答 1查看 62关注 0票数 0

使用使用mysql而不是mysqli/pdo的遗留代码,所以不要担心这一点,稍后我将更新查询。

尽管我的当前方法有效,但我确信有一种更干净的方法来完成这个任务,而不是一个查询和3个子查询。我主要想学习如何更好地增强我的查询,并尽量减少查询的数量。

我想做的是

  1. echo显示日期在顶部的每个日期的所有数据
  2. 在用户旁边的特定日期显示每个用户的条目数。
  3. 对于每个日期,在上述2位数据的底部,以最高的条目数显示用户/s。 $query = mysql_query('SELECT *从条目组按日期(Dt)‘);$g = 0;$g ($row = @mysql_fetch_array($query)) { $group$g =date(’y-m‘,strtotime($row'dt'));echo $group$g。“;//用计数$dayquery = mysql_query('SELECT *,count (用户名)从日期(Dt)=”‘.$group$g’“的条目显示今天的人的姓名。按用户名顺序分组,按COUNT(用户名)DESC‘;while ($today = @mysql_fetch_array($dayquery)) { echo $今天’‘first_name’。“\”。今天的“总额”。"";}//显示$topquery =mysql_query(‘从日期(Dt)=’.$group$g‘的条目中选择计数(用户名)为最高计数。按用户名顺序分组按计数(用户名) DESC限制1‘;而($toptoday = @mysql_fetch_array($topquery)) { echo“今天最高:”。今天的最高价。"“;}//显示具有最高计数的用户:;$userstopquery = mysql_query('SELECT *,count (用户名)从DATE(dt) =”‘.$group$g’“条目中的总计。和计数(用户名)=“.$top当今‘最高'”。和按用户名进行分组);while ($topusers = @mysql_fetch_array($userstopquery)) { echo $topuser‘’first_name‘。"“;} $g++;}

我遇到的麻烦是,当我尝试减少这些子查询并使用MAX时,它只会输出每个日期的最高计数,而不是所有的数据,这就是我所需要的,包括在给定的一天中输入最多的用户/s的输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-03 12:48:50

你可以从这样的事情开始。请注意,我没有使用PHP,因为它在3或4年前就被废弃了.

代码语言:javascript
复制
require('path/to/mysqli/connection/stateme.nts');

$array = array();

$query = "
SELECT e.dt
     , e.username
     , COUNT(*) ttl
  FROM entries e
 GROUP
    BY e.dt
     , e.username
 ORDER 
    BY e.dt, ttl DESC;
";


$result = mysqli_query($conn,$query);

while ($row = mysqli_fetch_assoc($result)) 
        {
            $array[] = $row;
        }

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

https://stackoverflow.com/questions/30013446

复制
相关文章

相似问题

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