Php 当循环不工作时,使用group by时仅显示一条记录
我有一个表MySQL,其中项目可能是重复的,x行的room_number和menu_probelm与y行的room_number和menu_probelm相同。我试图只显示y行,如果它是x行的副本。该表有4行,具有相同的房间编号和菜单问题值,但col3注释不同。出于某种原因,它向我展示了第一个复制品rowy,而不是另外两个 这是我的密码:Php 当循环不工作时,使用group by时仅显示一条记录,php,sql,while-loop,Php,Sql,While Loop,我有一个表MySQL,其中项目可能是重复的,x行的room_number和menu_probelm与y行的room_number和menu_probelm相同。我试图只显示y行,如果它是x行的副本。该表有4行,具有相同的房间编号和菜单问题值,但col3注释不同。出于某种原因,它向我展示了第一个复制品rowy,而不是另外两个 这是我的密码: $query_Recordset1 = "SELECT *, count(*) FROM damage GROUP BY room_number, menu_
$query_Recordset1 = "SELECT *, count(*) FROM damage GROUP BY room_number, menu_probelm HAVING count(*) > 1 ";
$Recordset1 = mysql_query($query_Recordset1, $hk) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
下面是我表格中的while语句:
<table width="80%" border="0" cellspacing="0" cellpadding="0">
<tr>
<th align="left" valign="top" scope="col">Record Number</th>
<th align="left" valign="top" scope="col">Room Number</th>
<th align="left" valign="top" scope="col">Room Number</th>
<th align="left" valign="top" scope="col">Error Found </th>
<th align="left" valign="top" scope="col">Delete</th>
</tr>
<?php do { ?>
<tr>
<td align="left" valign="top"><a href="#"><img src="../images/error2.png" width="25" height="25" alt="<?php echo $row_Recordset1['rid']; ?>"></a></td>
<td align="left" valign="top"><?php echo $row_Recordset1['room_number']; ?></td>
<td align="left" valign="top"><?php echo $row_Recordset1['menu_probelm']; ?></td>
<td align="left" valign="top"><?php echo $row_Recordset1['notes']; ?></td>
<td align="left" valign="top"></a><a href="delete.php?rid=<?php echo $row_Recordset1['rid'];?>"><img src="../images/Remove.png" width="25" height="25" alt="Delete Record"></a></td>
</tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
<tr>
<td colspan="2" align="left" valign="top"> </td>
<td colspan="3" align="left" valign="top"> </td>
</tr>
</table>
这是我的SQL表
|rid ai |房间号|菜单|问题|注释|
总共有5条记录。其中三个房间的135地毯有问题,他们都有不同的笔记,只给我看了第一张记录笔记,另外两张,我想不显示第一张记录,只显示第二张和第三张副本。
我试着把整个桌子放在ACSSI中,但它看起来很乱,我试了一个HTML标签,但它没有显示出来 您的SQL查询可能有问题。您正试图在查询中执行SELECT*,它要求查询表中的所有列。但是,由于您正在按进行分组,因此只能选择以下列:房间编号、菜单问题以及每组的计数 请改为尝试此查询:
SELECT room_number, menu_probelm, count(*) AS 'frequency'
FROM damage
GROUP BY room_number, menu_probelm
HAVING frequency > 1;
您无法选择GROUP BY中的所有列的原因是MySQL引擎无法知道应该为该组选择哪些其他列的值。谢谢您的代码。我添加了它并在phpmyadmin中签入,并用print_r$row_Recordset1进行了检查;我确实看到频率计数是我想要的3。但它只显示1个记录行。您还有其他想法吗?查询中的HAVING子句将阻止显示频率为1的组。我不确定我们是否在同一页上。SQL告诉我频率应该是3。但它只显示第1条记录,应该跳过该条记录,并显示第2条和第3条记录。请编辑您的问题并尽可能包括表格-您说只有4行,结果是预期的。@tim已编辑该问题,以便在SQL选项卡中添加我所能添加的内容