Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Explicacion.

Estas en el tema de Explicacion. en el foro de Mysql en Foros del Web. Hola, no se si aqui va este tema si no decirme donde es. Quiero que me expliqueis el GROUP BY que por mucho que miro ...
  #1 (permalink)  
Antiguo 30/07/2012, 10:35
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 9 meses
Puntos: 27
Explicacion.

Hola, no se si aqui va este tema si no decirme donde es.

Quiero que me expliqueis el GROUP BY que por mucho que miro en web y todo no lo encuentro y por eso me he registrado aqui.

Habeis si sois tan amable de ayudarme
y si podeis ponerme un ejemplo porfavor.
  #2 (permalink)  
Antiguo 30/07/2012, 11:29
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Explicacion.

Hola PepeF:

La agrupación es un concepto básico de Base de Datos, así es que por lo que preguntas puedo suponer que no tienes muchos conocimientos sobre este tema ni sobre cómo trabaja el lenguaje de consultas SQL...

La cláusula GROUP BY, como su traducción lo indica, tiene como propósito agrupar información de acuerdo a un criterio en común. Por lo general se utiliza con funciones de agrupación o de agregación (COUNT, MIN, MAX, AVG, SUM) sería conveniente que le dieras un vistazo a cada una de ellas, para que sepas qué hace cada una... Para este ejemplo voy a tomar la función SUM, que es una de las más comunes. Supongamos que tienes esta información.

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+----------+-----------------+
  3. | id   | vendedor | piezas_vendidas |
  4. +------+----------+-----------------+
  5. |    1 | hugo     |              10 |
  6. |    2 | paco     |              12 |
  7. |    3 | luis     |              21 |
  8. |    4 | hugo     |              11 |
  9. |    5 | hugo     |               7 |
  10. |    6 | luis     |              13 |
  11. |    7 | paco     |              22 |
  12. |    8 | hugo     |              14 |
  13. |    9 | luis     |              18 |
  14. +------+----------+-----------------+
  15. 9 rows in set (0.02 sec)

Supongamos que queremos obtener el número de piezas vendidas por cada vendedor, eso quiere decir que tendríamos que agrupar los registros por cada categoría:

es decir, para HUGO tendrías que considerar los registros

Código:
+------+----------+-----------------+
| id   | vendedor | piezas_vendidas |
+------+----------+-----------------+
|    1 | hugo     |              10 |
|    4 | hugo     |              11 |
|    5 | hugo     |               7 |
|    8 | hugo     |              14 |
+------+----------+-----------------+
9 rows in set (0.02 sec)
Y lo mismo para Paco y Luis:

Código:
+------+----------+-----------------+
| id   | vendedor | piezas_vendidas |
+------+----------+-----------------+
|    2 | paco     |              12 |
|    7 | paco     |              22 |
+------+----------+-----------------+
9 rows in set (0.02 sec)
Código:
+------+----------+-----------------+
| id   | vendedor | piezas_vendidas |
+------+----------+-----------------+
|    3 | luis     |              21 |
|    6 | luis     |              13 |
|    9 | luis     |              18 |
+------+----------+-----------------+
9 rows in set (0.02 sec)
La función GROUP BY te permite hacer esto de manera automática. Observa que el ID es diferente en cada caso POR LO TANTO NO ES UN DATO COMÚN Y NO DEBERÍA CONSIDERARSE EN LA AGRUPACIÓN.

Código MySQL:
Ver original
  1. mysql> SELECT vendedor, SUM(piezas_vendidas)
  2.     -> FROM tabla
  3.     -> GROUP BY vendedor;
  4. +----------+----------------------+
  5. | vendedor | SUM(piezas_vendidas) |
  6. +----------+----------------------+
  7. | hugo     |                   42 |
  8. | luis     |                   52 |
  9. | paco     |                   34 |
  10. +----------+----------------------+
  11. 3 rows in set (0.00 sec)

Como te comenté al inicio, el comportamiento de la función GROUP BY depende también de la función de agrupación que estés utilizando.

Saludos
Leo.
  #3 (permalink)  
Antiguo 30/07/2012, 11:45
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 9 meses
Puntos: 27
Respuesta: Explicacion.

y despues como lo muestro asin?

$reg = mysql_fetch_array($registros);
echo $reg['vendedor'];
echo $reg['piezas_vendidas'];
  #4 (permalink)  
Antiguo 30/07/2012, 12:04
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Explicacion.

Ese ya no es un tema de MySQL, sino del lenguaje de programación que estás utilizando... De la misma manera que en el foro de PHP te dijeron que lo que preguntabas no era tema para ese foro, sino para el de SQL...

Como ya te comentaron en el foro de PHP, MySQL y PHP en realidad no tienen nada que ver el uno del otro, a pesar de que pudieran parecer relacionados. MySQL es un servidor de Base de Datos, como lo son también ORACLE, SQL Server, PostgreSQL, Informix, etc. PHP por lo su parte es un lenguaje de programación, como JAVA, ASP.NET, PERL, Delphi, etc. en realidad tú podrías trabajar con cualquier combinación de estos dos componentes.

Compañer@... tienes pocos mensajes publicados, pero en cada uno de ellos haz escrito apenas una linea de texto, lo que hace que tus preguntas sean demasiado generales y que sea difícil tratar de ayudarte... Además, tal pareciera que no te has dado tiempo para investigar primero sobre lo que estás preguntando. Lo menos que podemos pedir es que investigues primero en GOOGLE, en la documentación oficial de MySQL y en este mismo foro para ver si das con la respuesta. Sólo si no después de hacer esto continuas con problemas entonces sí debes acudir al foro a expresar tus dudas. Mucho ojo con eso.

Saludos
Leo.
  #5 (permalink)  
Antiguo 30/07/2012, 12:05
 
Fecha de Ingreso: julio-2012
Mensajes: 276
Antigüedad: 11 años, 9 meses
Puntos: 27
Respuesta: Explicacion.

Solucionado.

Última edición por PepeF; 30/07/2012 a las 12:14
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:50.