|
|
|
| Суть вопроса в следующем. При выборке из БД MySQL нужно удалять одинаковые значения, к примеру:
Идет выдача на страницу:
Значение 1
Значение 2
Значение 5
Значение 1
Значение 1
Значение 7
Значение 2
А нужно оставить:
Значение 1
Значение 2
Значение 5
Значение 7
Подскажите как реализовать такую схему, желательно с примером... | |
|
|
|
|
|
|
|
для: Legenda
(21.04.2009 в 14:02)
| | Нужно удалять одинаковые значения или выводить отличающиеся строки?
Второе делается с помощью SELECT DISTINCT fields,... FROM table | |
|
|
|
|
|
|
|
для: Trianon
(21.04.2009 в 14:24)
| | Нужно убирать повторяющиеся значения, чтобы не было повторений.
То есть если значение 1 повторяется несколько раз, нужно сделать, чтобы оно выводилось только 1 раз. | |
|
|
|
|
|
|
|
для: Legenda
(21.04.2009 в 17:09)
| | Еще раз прочтите внимательно вопрос.
В самой таблице БД должны остаться повторы или нет? | |
|
|
|
|
|
|
|
для: Trianon
(21.04.2009 в 17:26)
| | В таблице повторы должны быть, повторов не должно быть в выдаче через запрос к БД. То есть я обращаюсь к таблице и вывожу список значений одного из полей, в списке присутствуют повторы, из БД повторы удалять не требуется, нужно исключить повторы в выдаче из БД | |
|
|
|
|
|
|
|
для: Legenda
(21.04.2009 в 17:40)
| | DISTINCT как раз это и делает. | |
|
|
|
|
|
|
|
для: 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>";
}}}
|
| |
|
|
|
|
|
|
|
для: Legenda
(22.04.2009 в 11:14)
| | $r_postl нужно проверить на неравенство нулю сразу после вызова mysql_query | |
|
|
|
|
|
|
|
для: 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>";
}}}
|
В результате получаю пустую страницу | |
|
|
|
|
|
|
|
для: Legenda
(22.04.2009 в 11:47)
| | если результат вызова mysql_query равен нулю, значит сервер не смог выполнить запрос.
Чтобы разобраться, почему это произошло, имеет смысл вывести на экран текст самого запроса.
Кроме того, функция mysql_error() возвращает диагностическое сообщение, которое тоже может прояснить ситуацию. | |
|
|
|
|
|
|
|
для: Legenda
(22.04.2009 в 11:47)
| | после DISTINCT список полей, и для проверки можно вместо $begin $pnumber поставить просто числа | |
|
|
|
|
|
|
|
для: 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');
|
| |
|
|
|
|
|
|
|
для: Legenda
(22.04.2009 в 15:06)
| | очевидно
SELECT DISTINCT `email` FROM `object`
|
| |
|
|
|
|
|
|
|
для: Trianon
(22.04.2009 в 15:19)
| | >очевидно
SELECT DISTINCT `email` FROM `object`
|
Вылетает пустая страница... | |
|
|
|
|
|
|
|
для: Legenda
(22.04.2009 в 15:46)
| | >Вылетает пустая страница...
я уже ответил (22.04.2009 в 13:05) | |
|
|
|
|
|
|
|
для: Legenda
(22.04.2009 в 15:46)
| | Самый первый пост - значения были реально получены или это был теоретический вопрос. Если получены, то приведите конкретно этот запрос.
И выполните подсказку Trianon, иначе еще неделю будете биться об стенку!
[поправлено модератором: новая ветка выделена в отдельную тему http://softtime.ru/forum/read.php?id_forum=3&id_theme=80795] | |
|
|
|