Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Проблема выбора уникальных записей


Автор: Niko8D 29.1.2015, 11:36
Добрый день!

Столкнулся с не понятной проблемой. Есть БД:
Код

--
-- Структура таблицы `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `p1` varchar(100) NOT NULL,
  `p2` varchar(255) NOT NULL,
  `p3` varchar(100) NOT NULL,
  `p4` varchar(255) NOT NULL,
  `p5` varchar(255) NOT NULL,
  `p6` int(11) NOT NULL,
  `p7` varchar(100) NOT NULL,
  `p8` varchar(100) NOT NULL,
  `removed` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=67 ;

--
-- Дамп данных таблицы `users`
--

INSERT INTO `users` (`id`, `p1`, `p2`, `p3`, `p4`, `p5`, `p6`, `p7`, `p8`, `removed`) VALUES
(62, 'Сидоров Н.А.', 'Сидоров Николай Александрович', 'u0242', '1', '1', 1629, '5445', '', 0),
(63, 'Петров Н.А.', 'Петров Николай Александрович', 'u0243', '1', '1', 1629, '5445', '', 0),
(64, 'Иванов Н.А.', 'Иванов Николай Александрович', 'u0244', '1', '1', 1629, '5445', '', 0),
(65, 'Сидоров Н.А.', 'Сидоров Николай Александрович', 'u0245', '1', '1', 1629, '5445', '', 1),
(66, 'Сидоров Н.А.', 'Сидоров Николай Александрович', 'u0246', '1', '1', 1629, '5445', '', 0);


по этой БД делаю запрос в phpmyadmin:

Код

SELECT DISTINCT (users.p2) FROM `users`


результат выполнения:


p2
Сидоров Николай Александрович
Петров Николай Александрович
Иванов Николай Александрович


все отрабатывется нормально. Но при попытке реализовать это в рабочей среде:

Код

$result = $mysqli->query(" SELECT DISTINCT (users.p2) FROM `users`"); 
$row = $result->fetch_row(); 
        
        while ($row = $result->fetch_row()) { 
            
            echo $row[0].'<br>';            
        }

        $result->close();


почемуто съедается превая запись.

результат выполнения:

Петров Николай Александрович
Иванов Николай Александрович

Гуглил, но ничего не нашел. Прошу помощи ибо сам разобратся не могу.

Спасибо.

Автор: Aliance 29.1.2015, 12:06
Так а 2-то строчка зачем? Из-за нее и съедается 1 запись.

ПС: названия столбцов вообще ни разу не говорящие.
ППС: и зачем хранить ФИО в двух вариациях? Не проще ли разнести на 3 столбца и при вывода где нужно брать только первые символы (инициалы) от имени и отчества?

Автор: Niko8D 29.1.2015, 12:25
Ты имеешь виду эту строчку?

Код

$row = $result->fetch_row();


Весь код взят из шаблона, по этому такое название столбцов, а на счет ФИО, да можно и так сделать.

Добавлено через 9 минут и 21 секунду
Спасибо за подсказку, проблема решена.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)