valores unicos sumar para macro lista extraer entre duplicados contar condiciones con php mysql sql

php - sumar - lista con valores unicos excel



seleccionando valores Ășnicos de una columna (9)

Tengo una tabla MySQL que contiene el siguiente tipo de información:

Date product 2011-12-12 azd 2011-12-12 yxm 2011-12-10 sdx 2011-12-10 ssdd

Aquí hay un ejemplo de un script que uso para obtener datos de esta tabla:

<?php $con = mysql_connect("localhost","username","password"); if (!$con) { die(''Could not connect: '' . mysql_error()); } mysql_select_db("db", $con); $sql=mysql_query("SELECT * FROM buy ORDER BY Date"); while($row = mysql_fetch_array($sql)) { echo "<li><a href=''http://www.website/". $row[''Date''].".html''>buy ". date("j, M Y", strtotime($row["Date"]))."</a></li>"; } mysql_close($con); ?>

Este script muestra cada fecha de la tabla, por ejemplo

12.dec 2011 12.dec.2011 10.dec.2011 10.dec.2011

Me gustaría mostrar solo fechas únicas, por ejemplo

12.dec.2011 10.dec.2011


Depende de lo que necesites.

En este caso sugiero:

SELECT DISTINCT(Date) AS Date FROM buy ORDER BY Date DESC;

porque hay pocos campos y el tiempo de ejecución de DISTINCT es menor que la ejecución de GROUP BY .

En otros casos, por ejemplo, donde hay muchos campos, prefiero:

SELECT * FROM buy GROUP BY date ORDER BY date DESC;


El resto es casi correcto, excepto que deben ordenar por Fecha DESC

SELECT DISTINCT(Date) AS Date FROM buy ORDER BY Date DESC;


Hay una palabra clave específica para lograr lo mismo.

SELECT DISTINCT( Date ) AS Date FROM buy ORDER BY Date DESC;


Otra respuesta DISTINCT , pero con valores múltiples:

SELECT DISTINCT `field1`, `field2`, `field3` FROM `some_table` WHERE `some_field` > 5000 ORDER BY `some_field`


Use algo como esto en caso de que también desee dar salida a los detalles de los productos por fecha como JSON.

SELECT `date`, CONCAT(''{'',GROUP_CONCAT(''{/"id/": /"'',`product_id`,''/",/"name/": /"'',`product_name`,''/"}''),''}'') as `productsJSON` FROM `buy` group by `date` order by `date` DESC product_id product_name date | 1 | azd | 2011-12-12 | | 2 | xyz | 2011-12-12 | | 3 | ase | 2011-12-11 | | 4 | azwed | 2011-12-11 | | 5 | wed | 2011-12-10 | | 6 | cvg | 2011-12-10 | | 7 | cvig | 2011-12-09 | RESULT date productsJSON 2011-12-12T00:00:00Z {{"id": "1","name": "azd"},{"id": "2","name": "xyz"}} 2011-12-11T00:00:00Z {{"id": "3","name": "ase"},{"id": "4","name": "azwed"}} 2011-12-10T00:00:00Z {{"id": "5","name": "wed"},{"id": "6","name": "cvg"}} 2011-12-09T00:00:00Z {{"id": "7","name": "cvig"}}

Pruébalo en SQL Fiddle


Use el operador DISTINCT en MySQL:

SELECT DISTINCT(Date) AS Date FROM buy ORDER BY Date DESC;


Use esta consulta para obtener valores

SELECT * FROM `buy` group by date order by date DESC


utilizar

SELECT DISTINCT Date FROM buy ORDER BY Date

entonces MySQL elimina duplicados

Por cierto: el uso de nombres de columna explícitos en SELECT utiliza menos recursos en PHP cuando obtiene un gran resultado de MySQL


DISTINCT es siempre una elección correcta para obtener valores únicos. También puedes hacerlo alternativamente sin usarlo. Eso es GROUP BY . Que simplemente tiene que agregar al final de la consulta y seguido por el nombre de la columna.

SELECT * FROM buy GROUP BY date,description