Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проверка на наличие одинаковой записи в таблице Mysql
 
 автор: Alex007   (23.11.2006 в 13:47)   письмо автору
 
 

Люди! Как проверить наличие одинаковой записи в таблице Mysql и вывести количество этих одинаковых записей?

   
 
 автор: DEM   (23.11.2006 в 14:19)   письмо автору
 
   для: Alex007   (23.11.2006 в 13:47)
 

Вообще-то это ворпос не по РНР, а по MySQL :) :


<?php
$sql 
mysql_query("SELECT * FROM table1 WHERE pole='".$pole."'");
if(
mysql_num_rows($sql)>0)
{
  for(
$i=0;$i<mysql_num_rows($sql);$i++)
  {
    
$arr mysql_fetch_array($sql);
    echo 
$arr['name']."<BR>";
  }
}
?>

Что-то вроде этого...

   
 
 автор: babilonian   (23.11.2006 в 14:23)   письмо автору
 
   для: DEM   (23.11.2006 в 14:19)
 


<?php 
echo "Количество одиннаковых записей: ".mysql_num_rows(mysql_query("SELECT * FROM table1 WHERE pole='".$pole."'"));
?>

:)

   
 
 автор: Loki   (23.11.2006 в 14:26)   письмо автору
 
   для: Alex007   (23.11.2006 в 13:47)
 

если поле заранее известно:
<?
mysql_query
("SELECT COUNT(*) FROM table1 WHERE pole='$pole'");
echo 
mysql_result(0$result);

   
 
 автор: Alex007   (23.11.2006 в 17:02)   письмо автору
 
   для: Loki   (23.11.2006 в 14:26)
 

2 DEM:
знаю но когда написал было уже поздно


2 Loki и всем:

>если поле заранее известно:
>
<?
>mysql_query("SELECT COUNT(*) FROM table1 WHERE pole='$pole'");
>echo 
mysql_result(0$result);
>


спасибо но
по задачи поле неизвестно

   
 
 автор: elenaki   (23.11.2006 в 17:09)   письмо автору
 
   для: Alex007   (23.11.2006 в 17:02)
 

а если поле неизвестно, с ЧЕМ записи будут одинаковы? если вам нужен поиск дубликатов,
то тут была такая тема.

алгоритм удаления дубликатов:
1. создается новая таблица с такими же как в исследуемой полями и типами
2. делается запрос INSERT INTO tbl_2 SELECT * FROM tbl1 GROUP by name (имя столбца, где
надо искать дубликаты)
3. если все сделано правильно и в новой таблице все читается и нет дубликатов, можно
удалить старую и переименовать новую таблицу в старую ALTER TABLE tbl2 RENAME tbl1

   
 
 автор: Alex007   (23.11.2006 в 17:29)   письмо автору
 
   для: elenaki   (23.11.2006 в 17:09)
 

спасибо
но мне надо еще подсчитать кол-во дубликатов

   
 
 автор: Loki   (23.11.2006 в 17:24)   письмо автору
 
   для: Alex007   (23.11.2006 в 17:02)
 

тогда это делается так:

SELECT pole, COUNT(pole) FROM table1 GROUP BY pole

   
 
 автор: Loki   (23.11.2006 в 17:34)   письмо автору
 
   для: Loki   (23.11.2006 в 17:24)
 

ну еще это дело можно отсортировать по частоте:)

SELECT pole, COUNT(pole) as num FROM table1 GROUP BY pole ORDER BY num DESC

   
 
 автор: Trianon   (23.11.2006 в 17:44)   письмо автору
 
   для: Loki   (23.11.2006 в 17:34)
 

SELECT pole, COUNT(pole) as num FROM table1 
GROUP BY pole 
HAVING num > 1
ORDER BY num DESC

   
 
 автор: Alex007   (23.11.2006 в 18:32)   письмо автору
 
   для: Alex007   (23.11.2006 в 13:47)
 

Я наверное уже достал но возник вопрос как вывести результат в веб-браузере для каждой повторившейся записи?

У меня не получается:

// "Edit info" script

$query = mysql_query("SELECT * FROM user GROUP BY name Order by Count(name) Desc");
if (mysql_num_rows($query) == 0)
{
exit("Вот так вот!");
}
echo "<table border=1>";
while($v=mysql_fetch_assoc($query))
{
echo "<tr>
          <td  bgcolor=F0F8FF  width=150>".$v['name']."</td>
          <td  bgcolor=F0F8FF  width=150>".mysql_result(???????????????)."</td>
          <td  bgcolor=F0F8FF  width=150>".$v['email']."</td>
          <td  bgcolor=F0F8FF  width=150>".$v['url']."</td>
          <td  bgcolor=F0F8FF  width=150>".$v['about']."</td>
          <td><form action=edit_info.php method=post><input type=hidden name=user value=".$v['name']."><input type=submit value=Edit></form></td>";
echo "</tr>";}
echo "</table>";

   
 
 автор: Loki   (23.11.2006 в 19:48)   письмо автору
 
   для: Alex007   (23.11.2006 в 18:32)
 


$query = mysql_query("SELECT * FROM user GROUP BY name Order by Count(name) Desc");

Достаточно вольная интерпретация того, что вам написали выше...

   
 
 автор: Alex007   (23.11.2006 в 20:53)   письмо автору
 
   для: Loki   (23.11.2006 в 19:48)
 

>

>$query = mysql_query("SELECT * FROM user GROUP BY name Order by Count(name) Desc");
>

>Достаточно вольная интерпретация того, что вам написали выше...
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Возможно.
Слушайте! Я уже 2 часа парюсь с этой "вольной интерпретацией". Уточню: меня интересует именно вывод данных результата обработки таблицы.

   
 
 автор: Alex007   (24.11.2006 в 09:28)   письмо автору
 
   для: Alex007   (23.11.2006 в 13:47)
 

Помогите кто-нибудь плиз!

   
 
 автор: AlexelA   (24.11.2006 в 10:43)   письмо автору
 
   для: Alex007   (24.11.2006 в 09:28)
 

Попробуйте такой запрос

SELECT name,COUNT(name) FROM user group by name

Для вывода в браузер необходимо будет
добавить в запрос необходимые поля.
Приблизительно это будет выглядеть так:

$query = mysql_query("SELECT name,COUNT(name) as counts,email,url,about FROM user group by
name having counts > 1");
if (mysql_num_rows($query) == 0)
{
exit("Вот так вот!");
}
echo "<table border=1>";
while($v=mysql_fetch_row($query))
{
echo "<tr>
<td bgcolor=F0F8FF width=150>".$v[0]."</td>
<td bgcolor=F0F8FF width=150>".$v[1]."</td>
<td bgcolor=F0F8FF width=150>".$v[2]."</td>
<td bgcolor=F0F8FF width=150>".$v[3]."</td>
<td bgcolor=F0F8FF width=150>".$v[4]."</td>
<td><form action=edit_info.php method=post><input type=hidden name=user value=".$v['0]."><input type=submit value=Edit></form></td>";
echo "</tr>";}
echo "</table>";

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования