Pregunta

Me gustaría crear una matriz (en php) a partir de resultados sql como este: Tenemos la sql-table " Posts " que almacena el Nombre y el Mensaje . Ejemplo:

  

Nombre | Mensaje

     

John | Hola

     

Nick | buen día

     

George | Adios

     

John | donde

Lo que quiero es mostrar los nombres de las personas que han publicado un mensaje pero que no muestran los mismos nombres más de 1 vez . Entonces la salida sería John, Nick, George. (De estos registros, vemos que John ha publicado 2 mensajes, pero en la salida final, solo vemos una vez su nombre).

¿Es esto de alguna manera posible? Gracias de antemano.

¿Fue útil?

Solución

Prueba:

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

Otros consejos

SELECCIONAR DISTINTO

Podría ejecutar una consulta SQL para seleccionar los nombres distintos y nada más:

SELECT DISTINCT Name FROM Posts;

Esto le dará un conjunto de resultados que consta de valores de Nombres distintos, y cada valor único solo se devolverá una vez en el conjunto.

para obtener el recuento que necesitará agregar usando el grupo por:

SELECCIONAR         NOMBRE     , COUNT (*) como publicaciones DESDE         Mensajes AGRUPAR POR         NOMBRE

Aquí está el SQL si no es contrario al grupo BY

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

Personas que tienen más de 1 publicación

select count(name) as N, name from posts group by name having N > 1 ;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top