Вопрос

Я хотел бы создать массив (в 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 ;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top