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

Форум MySQL

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

 

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

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

тема: Удаление одинаковых значений в выборке
 
 автор: Legenda   (21.04.2009 в 14:02)   письмо автору
 
 

Суть вопроса в следующем. При выборке из БД MySQL нужно удалять одинаковые значения, к примеру:


Идет выдача на страницу:

Значение 1
Значение 2
Значение 5
Значение 1
Значение 1
Значение 7
Значение 2



А нужно оставить:

Значение 1
Значение 2
Значение 5
Значение 7


Подскажите как реализовать такую схему, желательно с примером...

  Ответить  
 
 автор: Trianon   (21.04.2009 в 14:24)   письмо автору
 
   для: Legenda   (21.04.2009 в 14:02)
 

Нужно удалять одинаковые значения или выводить отличающиеся строки?

Второе делается с помощью SELECT DISTINCT fields,... FROM table

  Ответить  
 
 автор: Legenda   (21.04.2009 в 17:09)   письмо автору
 
   для: Trianon   (21.04.2009 в 14:24)
 

Нужно убирать повторяющиеся значения, чтобы не было повторений.
То есть если значение 1 повторяется несколько раз, нужно сделать, чтобы оно выводилось только 1 раз.

  Ответить  
 
 автор: Trianon   (21.04.2009 в 17:26)   письмо автору
 
   для: Legenda   (21.04.2009 в 17:09)
 

Еще раз прочтите внимательно вопрос.
В самой таблице БД должны остаться повторы или нет?

  Ответить  
 
 автор: Legenda   (21.04.2009 в 17:40)   письмо автору
 
   для: Trianon   (21.04.2009 в 17:26)
 

В таблице повторы должны быть, повторов не должно быть в выдаче через запрос к БД. То есть я обращаюсь к таблице и вывожу список значений одного из полей, в списке присутствуют повторы, из БД повторы удалять не требуется, нужно исключить повторы в выдаче из БД

  Ответить  
 
 автор: Trianon   (21.04.2009 в 18:04)   письмо автору
 
   для: Legenda   (21.04.2009 в 17:40)
 

DISTINCT как раз это и делает.

  Ответить  
 
 автор: Legenda   (22.04.2009 в 11:14)   письмо автору
 
   для: Trianon   (21.04.2009 в 18:04)
 

Может я что то не так делаю, но выдает следующее:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in


Вот пример части кода, как правильно сюда воткнуть этот аргумент:


$r_posl = mysql_query ("SELECT * FROM object ORDER BY id DESC LIMIT $begin, $pnumber");
$nr_posl=mysql_num_rows($r_posl);
            
if ($nr_posl>0) 
{
while ($rr_posl = mysql_fetch_array($r_posl))
{

if (isset ($rr_posl['id'])) 
{
echo $rr_posl['email']."<br>";
}}}

  Ответить  
 
 автор: Trianon   (22.04.2009 в 11:40)   письмо автору
 
   для: Legenda   (22.04.2009 в 11:14)
 

$r_postl нужно проверить на неравенство нулю сразу после вызова mysql_query

  Ответить  
 
 автор: Legenda   (22.04.2009 в 11:47)   письмо автору
 
   для: Trianon   (22.04.2009 в 11:40)
 

Ну вот к примеру пишу я такой вариант:


$r_posl = mysql_query ("SELECT DISTINCT FROM object ORDER BY id DESC LIMIT $begin, $pnumber");
if ($r_posl>0) 
{
$nr_posl=mysql_num_rows($r_posl);
while ($rr_posl = mysql_fetch_array($r_posl))
            
{

if (isset ($rr_posl['id'])) 
{
echo $rr_posl['email']."<br>";
}}} 


В результате получаю пустую страницу

  Ответить  
 
 автор: Trianon   (22.04.2009 в 13:05)   письмо автору
 
   для: Legenda   (22.04.2009 в 11:47)
 

если результат вызова mysql_query равен нулю, значит сервер не смог выполнить запрос.
Чтобы разобраться, почему это произошло, имеет смысл вывести на экран текст самого запроса.
Кроме того, функция mysql_error() возвращает диагностическое сообщение, которое тоже может прояснить ситуацию.

  Ответить  
 
 автор: GeorgeIV   (22.04.2009 в 13:09)   письмо автору
 
   для: Legenda   (22.04.2009 в 11:47)
 

после DISTINCT список полей, и для проверки можно вместо $begin $pnumber поставить просто числа

  Ответить  
 
 автор: Legenda   (22.04.2009 в 15:06)   письмо автору
 
   для: GeorgeIV   (22.04.2009 в 13:09)
 

Ну вот пример таблицы с данными, как вытащить от сюда, на свет Божий, список полей email без повторов:


CREATE TABLE `object` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `email` tinytext,
   PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;

INSERT INTO `object` (`id`, `email`) VALUES 
(1, 'mail_1@mail.ru'),
(2, 'mail_2@mail.ru'),
(3, 'mail_1@mail.ru'),
(4, 'mail_3@mail.ru'),
(5, 'mail@yandex.ru');

  Ответить  
 
 автор: Trianon   (22.04.2009 в 15:19)   письмо автору
 
   для: Legenda   (22.04.2009 в 15:06)
 

очевидно
SELECT DISTINCT `email` FROM `object` 

  Ответить  
 
 автор: Legenda   (22.04.2009 в 15:46)   письмо автору
 
   для: Trianon   (22.04.2009 в 15:19)
 

>очевидно
SELECT DISTINCT `email` FROM `object` 


Вылетает пустая страница...

  Ответить  
 
 автор: Trianon   (22.04.2009 в 15:49)   письмо автору
 
   для: Legenda   (22.04.2009 в 15:46)
 

>Вылетает пустая страница...

я уже ответил (22.04.2009 в 13:05)

  Ответить  
 
 автор: GeorgeIV   (22.04.2009 в 16:53)   письмо автору
 
   для: Legenda   (22.04.2009 в 15:46)
 

Самый первый пост - значения были реально получены или это был теоретический вопрос. Если получены, то приведите конкретно этот запрос.

И выполните подсказку Trianon, иначе еще неделю будете биться об стенку!

[поправлено модератором: новая ветка выделена в отдельную тему http://softtime.ru/forum/read.php?id_forum=3&id_theme=80795]

  Ответить  
Rambler's Top100
вверх

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