【问题标题】:SQL Query when same date only show one separation同一日期只显示一个分隔符时的SQL查询
【发布时间】:2018-08-30 19:40:17
【问题描述】:

我想用 SQL 查询列出我的数据库中从今天开始的所有行。而且我还想用 HTML 中的 DATE 标题将它们分开,但每天只有一个日期。希望您能关注,我将在下面提供更多详细信息!

现在我的 SQL 查询如下所示:

SELECT * FROM hours h
JOIN projects p on h.projecthours_id = p.project_id
JOIN users u on p.project_owner = u.user_id
JOIN projects_status s ON p.project_group = s.status_id 
WHERE h.hours_timeadded >= CURDATE()
GROUP BY p.project_id
ORDER BY h.hours_timeadded

现在的输出代码如下所示:

while( $row8 = $result8->fetch_assoc() ){

extract($row8);
echo $hours_timeadded;
echo '<a href=view_project.php?id='.$project_id.'>';
echo "<div class='results_container'>";
echo '<div class="results_id">
      <div class="statusbox status_id">'.$project_id.'</div> 
      <object><a href="my_overview.php?id='.$user_id.'"><div class="statusbox status_owner">'.$user_firstname.'&nbsp;'.$user_lastname.'</div></a></object>

</div>
';

这就是它在 HTML 中的样子,注意 2018-01-04 的标题被列出了两次:

2018-01-01 
1123 USERNAME PROJECTNAME
2018-01-02 
1124 USERNAME PROJECTNAME
2018-01-04 
1125 USERNAME PROJECTNAME
2018-01-04
1126 USERNAME PROJECTNAME

这就是我想要的样子:

2018-01-01
1123 USERNAME PROJECTNAME
2018-01-02
1124 USERNAME PROJECTNAME
2018-01-04 
1125 USERNAME PROJECTNAME
1126 USERNAME PROJECTNAME

任何帮助或指导都会很棒。提前致谢!

【问题讨论】:

  • 添加 h.hours_timeadded 到 Group by 子句?
  • 您不能使用 group by 也 bcz 您正在从所有表中选择 (*) 所有列...所以这里 1 个日期可以与多个项目连接,因此记录会多次出现...在脚本中,您可以将日期列分开并通过与 $row8 映射创建新的关联数组并显示记录

标签: php sql mysqli


【解决方案1】:

根据您获得的数据与您想要的数据之间的差异,您的 SQL 似乎获得了正确的数据。
缺少的是显示代码 - 您需要验证您是否已经显示了日期,如果是,请跳过日期显示行。下面的内容可能适用(如果不是,它应该提供有关如何获得所需结果的想法)。

$timealreadyshown = "nothing yet";
while( $row8 = $result8->fetch_assoc() ){

extract($row8);
if ($timealreadyshown <> $hours_timeadded) {
   echo $hours_timeadded;
   $timealreadyshown = $hours_timeadded;
}

【讨论】:

  • 完全给了我这个想法,而且效果很好!非常感谢 Koen!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多