У меня есть таблица (MySQL), где элементы могут быть дублированы (room_number
и menu_probelm
строки x такие же, как room_number
и menu_probelm
строки y). Я пытаюсь показать только строку y, если это дубликат строки x. Таблица имеет 4 строки с одинаковыми значениями room_number
и menu_probelm
но col3 (notes
) отличается. По какой-то причине он показывает мне первую повторяющуюся строку (y), но не две другие.
Вот мой код:
$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 Tabel
| rid (ai) | room_number | menu_problem | примечания |
всего 5 записей. У трех из них есть комната 135 с проблемным ковровым покрытием, у всех у них разные заметки, и это только показывает мне первую запись за 1 запись других 2, и я хочу не показывать 1-ю запись, а только 2-й и 3-й (дубликаты), Я попытался поместить всю таблицу в ACSSI, но это выглядело беспорядок, и я попробовал HTML-таблицу, но это не показало бы ее.
Может возникнуть проблема с вашим SQL-запросом. Вы пытаетесь сделать SELECT *
в своем запросе, который запрашивает все столбцы в таблице. Но так как вы делаете GROUP BY
вы можете только SELECT
следующие столбцы: room_number, menu_probelm
, и COUNT
каждой группы.
Вместо этого попробуйте этот запрос:
SELECT room_number, menu_probelm, count(*) AS 'frequency'
FROM damage
GROUP BY room_number, menu_probelm
HAVING frequency > 1;
Причина, по которой вы не можете SELECT
все столбцы в GROUP BY
заключается в том, что движок MySQL не имеет возможности узнать, какое значение этих других столбцов он должен выбрать для этой группы.
HAVING
в запросе не позволяет отображать группы с частотой 1.