Результаты Sql в массив php
Вопрос
Я хотел бы создать массив (в php) из результатов sql следующим образом:У нас есть sql-таблица «Сообщения», в которой хранятся Имя и Сообщение.Пример:
Имя | Сообщение
Джон | Привет
Ник | приятный день
Джордж | До свидания
Джон | где
Чего я хочу, так это вывести имена людей, которые разместили сообщение, но не отображают одни и те же имена более 1 раза.Таким образом, результатом будет Джон, Ник, Джордж.(Из этих записей мы видим, что Джон опубликовал 2 сообщения, но в конечном выводе мы видим только один раз его имя).
Это как-то возможно?Заранее спасибо.
Решение
Пытаться:
$sql = <<<END
SELECT DISTINCT Name FROM Posts
END;
$query = mysql_query($sql) or die($sql . ' - ' . mysql_error());
$names = array();
while ($row = mysql_fetch_array($query)) {
$names[] = $row[0];
}
print_r($names);
Другие советы
ВЫБЕРИТЕ DISTINCT
Вы можете запустить SQL-запрос, чтобы выбрать отдельные имена и ничего больше:
SELECT DISTINCT Name FROM Posts;
Это даст вам результирующий набор, состоящий из отдельных значений Имен, причем каждое уникальное значение будет возвращено только один раз в наборе.
чтобы получить количество, которое вам нужно агрегировать, используя группу по:
<код> SELECT НАЗВАНИЕ , COUNT (*) как сообщения ОТ Сообщений ГРУППА ПО NAME код>
Вот SQL, если вы не против группы BY
select count(name) as N, name from posts group by name ;
Люди, имеющие более 1 поста
select count(name) as N, name from posts group by name having N > 1 ;