Php 我的GROUPBY子句有什么问题?
很抱歉问这个愚蠢的问题,但我不明白为什么我的数据显示了两次 这是一个非常简单的查询。DB table calendar_px目前只有三行和四个字段,其中一行用于日期,另一行用于年份,另一行包含一些简短内容 因此,如果您访问MySite/Calendar/janu\u 1页面,您应该会看到DB表中具有匹配日期2字段janur\u 1的所有年份和摘要。我的练习表有三行:Php 我的GROUPBY子句有什么问题?,php,sql,Php,Sql,很抱歉问这个愚蠢的问题,但我不明白为什么我的数据显示了两次 这是一个非常简单的查询。DB table calendar_px目前只有三行和四个字段,其中一行用于日期,另一行用于年份,另一行包含一些简短内容 因此,如果您访问MySite/Calendar/janu\u 1页面,您应该会看到DB表中具有匹配日期2字段janur\u 1的所有年份和摘要。我的练习表有三行: 1969 | So and so was born. 1969 | A volcano erupted. 1970 | They
1969 | So and so was born.
1969 | A volcano erupted.
1970 | They released a new song.
我的代码完美地显示了信息——只是显示了两次。我已经按每个字段名对其进行了分组,有无Cal2。扩展,什么都不起作用。看起来我一定犯了一个很简单的错误,但我不明白
这是我的疑问
$stm = $pdo->prepare("SELECT Cal2.N, Cal2.Date2, Cal2.Year, Cal2.Brief
FROM calendar_px Cal2
WHERE Cal2.Date2 = :MyURL
GROUP BY Cal2.Brief");
$stm->execute(array(
'MyURL'=>$MyURL
));
break;
}
while ($row = $stm->fetch())
{
$Year = $row['Year'];
$Brief[] = ''.$Year.' – '.$row['Brief'].'';
}
这是我在展示页面上看到的
echo join( $Brief, '<br>' );
试试这个:
$rows= $stm->fetchAll();
while ($rows as $row)
{
$Year = $row['Year'];
$Brief[] = ''.$Year.' – '.$row['Brief'].'';
}
哎呀,我知道我做了傻事,我终于明白了。不知何故,我将该文件与查询一起包含了两次。我必须记住使用require_一次,而不是简单的require。请删除这个帖子,除非你认为任何人都可以从中学习 你想用GROUPBY子句实现什么?@Aidan-我不希望三行的序列显示两次;我只希望每行显示一次。我认为分组条款是实现这一点的方法,尽管可能还有其他我不知道的解决方案。我想我不明白。您能否将当前输出附加到您的问题中?如果您只希望每行打印一次,则不需要GROUP BY子句。好的,这是我不带GROUP BY子句的查询$stm=$pdo->prepareSELECT Cal2.N,Cal2.Date2,Cal2.Year,Cal2.Brief FROM calendar_px Cal2,其中Cal2.Date2=:MyURL$stm->executearray'MyURL'=>$MyURL;但一切都没有改变;它仍然正确地显示所有三行,但是第二次显示所有三行。我不认为你的SQL是个问题,我试过了,但是我在第二行遇到了一个语法错误——虽然$rows作为$row我一直在使用它,但我还没有找出是什么导致了这个错误。