Pergunta

Eu gostaria de criar uma matriz (em PHP) a partir de resultados SQL como este: temos a tabela sql "Posts" que armazena o Nome e a Mensagem.Exemplo:

Nome | Mensagem

John | Olá

Nick | Belo dia

George | Adeus

John | Onde

O que eu quero é produz os nomes das pessoas que postaram uma mensagem, mas não exibem os mesmos nomes mais de uma vez. Então a saída seria John, Nick, George. (A partir desses registros, vemos que John publicou 2 mensagens, mas na saída final, vemos apenas uma vez o nome dele).

Isso de alguma forma é possível? Desde já, obrigado.

Foi útil?

Solução

Tentar:

$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);

Outras dicas

Selecione distinto

Você pode executar uma consulta SQL para selecionar apenas os nomes distintos, e nada mais:

SELECT DISTINCT Name FROM Posts;

Isso fornecerá um conjunto de resultados que consiste em valores de nomes distintos, com cada valor exclusivo sendo retornado apenas 1 tempo no conjunto.

Para obter a contagem, você precisará agregar usando o grupo por:

SELECT NAME , COUNT(*) as Posts FROM Posts GROUP BY NAME

Aqui está o SQL se você não é avesso ao grupo por

select count(name) as N, name from posts group by name ;

Pessoas com mais de 1 post

select count(name) as N, name from posts group by name having N > 1 ;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top