Foros del Web » Programando para Internet » PHP »

Convertir varias filas en una solo registro.

Estas en el tema de Convertir varias filas en una solo registro. en el foro de PHP en Foros del Web. Buenas Tardes Compañeros .... Tengo el siguiente resultado de una consulta Código: cod_suc campo1 campo2 campo3 campo4 103 A 10 80 11 103 B 20 ...
  #1 (permalink)  
Antiguo 14/06/2011, 15:44
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Convertir varias filas en una solo registro.

Buenas Tardes

Compañeros ....

Tengo el siguiente resultado de una consulta

Código:

cod_suc       campo1               campo2         campo3    campo4
103          A                    10                   80          11
103          B                    20                   90         19
104         C                     30                   10         02
104         D                     40                   15         12
Quiero solo que me quede un unico registro:

Código:
cod_suc   campo1   campo2      campo3      campo4    Campo1  Campo2   campo 3 campo4
103         A      10           80           11       B         20     80          11   
104         c       30          10           02       D         40     15          12

No si se pueda hacer ese tipo de estructura con PHP utilizando for o algo asi...

Ya que tengo una tabla, y dentro tengo el while , quiero crear una columna por cada cod_suc, pero por ejemplo en el caso anterior me crear dos columnas por cada registro es decir por el cod_suc.



Gracias....

Última edición por informacionsys; 14/06/2011 a las 15:49
  #2 (permalink)  
Antiguo 14/06/2011, 15:53
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Convertir varias filas en una solo registro.

Saludos!

Por que no lo manejas desde tu sentencia sql, agregándole un GROUP BY cod_suc .
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 14/06/2011, 15:55
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Convertir varias filas en una solo registro.

Hola compa..

PUes mira la consulta que tengo es la siguiente


SELECT cod_suc,tip_recep, [001] AS INDIRECTO ,[002] AS DIRECTO ,[003] AS CORPORATIVO
FROM
(SELECT cod_suc ,tip_recep, cat_dis , semana
FROM temporalGerente) AS temporal
PIVOT
(
COUNT(semana)
FOR cat_dis IN ([001],[002],[003])
) AS pivotTable


No se como meterle el group by


El resultado que me arroja ese query es el mostre anteriormente....

Gracias
  #4 (permalink)  
Antiguo 14/06/2011, 15:58
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Convertir varias filas en una solo registro.

Saludos

Seria basicamente lo siguiente

Código MySQL:
Ver original
  1. SELECT cod_suc,tip_recep, [001] AS INDIRECTO ,[002] AS DIRECTO ,[003] AS CORPORATIVO
  2. (SELECT cod_suc ,tip_recep, cat_dis , semana
  3. FROM temporalGerente) AS temporal
  4. PIVOT
  5. (
  6. COUNT(semana)
  7. FOR cat_dis IN ([001],[002],[003])
  8. ) AS pivotTable
  9. GROUP BY cod_suc
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #5 (permalink)  
Antiguo 14/06/2011, 16:00
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Convertir varias filas en una solo registro.

Hola compañero

Pues me arroja un error de sintaxis...


Entonces no se como hacerlo, pues llevo mucho tiempo tratando de mirar como pero no se..... y desde PHP no se como tampoco..


Gracias..
  #6 (permalink)  
Antiguo 14/06/2011, 16:13
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Convertir varias filas en una solo registro.

Saludos

Cual es el error de sintaxis?
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #7 (permalink)  
Antiguo 14/06/2011, 16:13
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Convertir varias filas en una solo registro.

Hola..

Le agregue el group by de la siguiente manera:


SELECT cod_suc,tip_recep, [001] AS INDIRECTO ,[002] AS DIRECTO ,[003] AS CORPORATIVO
FROM
(SELECT cod_suc ,tip_recep, cat_dis , semana
FROM temporalGerente) AS temporal
PIVOT
(
COUNT(semana)
FOR cat_dis IN ([001],[002],[003])
) AS pivotTable
GROUP BY cod_suc , tip_recep , cat_dis , 001 , 002 , 003


Pero me arroja el siguiente error:


Todas las expresiones GROUP BY deben contener al menos una columna que no sea una referencia exterior.
...


Gracias
  #8 (permalink)  
Antiguo 14/06/2011, 16:18
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Convertir varias filas en una solo registro.

El error es:

Todas las expresiones GROUP BY deben contener al menos una columna que no sea una referencia exterior.


Gracias.
  #9 (permalink)  
Antiguo 14/06/2011, 16:21
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Convertir varias filas en una solo registro.

Saludos

Prueba de la siguiente manera:

Código MySQL:
Ver original
  1. SELECT cod_suc,tip_recep, [001] AS INDIRECTO ,[002] AS DIRECTO ,[003] AS CORPORATIVO
  2. (SELECT cod_suc ,tip_recep, cat_dis , semana
  3. FROM temporalGerente
  4. GROUP BY cod_suc
  5. ) AS temporal
  6. PIVOT
  7. (
  8. COUNT(semana)
  9. FOR cat_dis IN ([001],[002],[003])
  10. ) AS pivotTable
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #10 (permalink)  
Antiguo 14/06/2011, 16:27
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Convertir varias filas en una solo registro.

Hola..

Pues el query quedo asi


SELECT cod_suc,tip_recep, [001] AS INDIRECTO ,[002] AS DIRECTO ,[003] AS CORPORATIVO
FROM
(SELECT cod_suc ,tip_recep, cat_dis , semana
FROM temporalGerente
GROUP BY cod_suc , tip_recep , cat_dis , semana
) AS temporal
PIVOT
(
COUNT(semana)
FOR cat_dis IN ([001],[002],[003])
) AS pivotTable



Código:



103	KC	0	5	0
201	KC	0	2	1
202	KC	1	5	0
203	KC	1	4	2
205	KC	4	5	0
206	KC	1	5	0
207	KC	4	5	0
209	KC	1	5	0
212	KC	2	6	0
216	KC	1	5	0
219	KC	0	5	0
220	KC	0	4	0
224	KC	3	0	0
225	KC	4	5	3
230	KC	0	5	0
231	KC	0	5	0
241	KC	1	5	0
242	KC	0	5	0
243	KC	0	4	0
244	KC	2	5	0
261	KC	0	4	0
243	KF	0	1	0
103	KV	1	0	0
201	KV	1	5	1
202	KV	1	0	0
203	KV	5	0	0
205	KV	5	2	0
206	KV	5	1	0
207	KV	4	1	0
209	KV	4	1	0
211	KV	5	0	0
212	KV	5	4	0
213	KV	5	0	0
215	KV	1	0	0
216	KV	5	3	0
217	KV	5	0	0
218	KV	5	0	0
219	KV	1	1	0
222	KV	4	0	0
223	KV	1	0	0
224	KV	5	0	0
225	KV	5	0	0
226	KV	3	0	0
230	KV	5	0	0
231	KV	2	0	0
241	KV	5	4	0
242	KV	5	1	0
243	KV	5	0	0
244	KV	4	2	0
245	KV	4	0	0
261	KV	1	0	0
103	OT	1	4	0
202	OT	0	5	0
203	OT	1	5	0
205	OT	1	5	0
206	OT	4	5	0
207	OT	0	4	0
y me muestra el siguiente resultado , pero necesito un unico registro por cod_suc que contenga


tomando por ejemplo el cod_suc 103

la necesito asi


103 KC 0 5 0 KV 1 0 0 OT 1 4 0...

Por favor....
  #11 (permalink)  
Antiguo 14/06/2011, 16:34
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Convertir varias filas en una solo registro.

Saludos

No lo agrupes por todos los campos por que sino te va dar el mismo resultado, si lo agrupas como te indique anteriormente que ocurre?
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #12 (permalink)  
Antiguo 14/06/2011, 16:41
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Convertir varias filas en una solo registro.

Amigo si no lo agrupo por todos los campos....

Me dice que los campos tip_recep , cat_dis , semana , no se encuentran dentro del group by .


Gracias..

Etiquetas: filas, registro
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 03:04.