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

query agrupar

Estas en el tema de query agrupar en el foro de Bases de Datos General en Foros del Web. Hola amigos, tengo la siguiente consulta Código PHP: SELECT ini . ini_id , to_char ( ini . ini_fecha_creacion ,  'DD-MM-YYYY' ), ini . ini_codigo , ini ...
  #1 (permalink)  
Antiguo 14/11/2008, 12:51
 
Fecha de Ingreso: julio-2007
Ubicación: /home/victor
Mensajes: 114
Antigüedad: 16 años, 9 meses
Puntos: 0
query agrupar

Hola amigos, tengo la siguiente consulta

Código PHP:
SELECT ini.ini_id,to_char(ini.ini_fecha_creacion'DD-MM-YYYY'),ini.ini_codigo,ini.ini_nombre,localiz.*,reg.*,est.*,instr.*,inst.* 
FROM iniciativa inilocalizacion localizregion regestado est,instrumento instr,institucion inst 
WHERE ini
.ini_id localiz.locz_ini_id 
AND ini.ini_inst_id inst.inst_id 
AND ini.ini_est_id est.est_id 
AND ini.ini_est_id BETWEEN 100 AND 120 
AND localiz.locz_reg_id reg.reg_id 
AND instr.instr_id ini.ini_instr_id 
AND ini.ini_codigo '786879'
ORDER BY ini.ini_fecha_creacion DESC 
que me devuelve lo siguiente

Código PHP:
     Código BIP u otro      Fecha de Ingreso      Instrumento      Región      Institución      Iniciativa      Estado      
1     786879     13
-11-2008     INSTRUMENTO 3     TARAPACA     FONASA     Eliminar a los flaites     En Edicion     
2     786879     13
-11-2008     INSTRUMENTO 3     COQUIMBO     FONASA     Eliminar a los flaites     En Edicion     
3     786879     13
-11-2008     INSTRUMENTO 3     ANTOFAGASTA     FONASA     Eliminar a los flaites     En Edicion     
4     786879     13
-11-2008     INSTRUMENTO 3     COQUIMBO     FONASA     Eliminar a los flaites     En Edicion     
5     786879     13
-11-2008     INSTRUMENTO 3     ANTOFAGASTA     FONASA     Eliminar a los flaites     En Edicion 
bueno eso me sirve, pero lo que necesito especificamente es que me agrupe por las regiones, osea me aparesca una sola fila y las regiones agrupadas

Código PHP:
     Código BIP u otro      Fecha de Ingreso      Instrumento      Región      Institución      Iniciativa      Estado      
1     786879     13
-11-2008     INSTRUMENTO 3     TARAPACA,COQUIMBO,ANTOFAGASTA,COQUIMBO,ANTOFAGASTA     FONASA     Eliminar a los flaites     En Edicion 
Espero me puedan ayudar

Salu2
  #2 (permalink)  
Antiguo 14/11/2008, 15:23
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: query agrupar

debes hacer dos cosas (corrige los nombres de los campos, pues los he puesto a ojo):


1) mostrar en el select con GROUP_CONCAT(nombreregion) region
2) agrupar por BIP mediante GROUP BY BIP

Mira el uso de GROUP_CONCAT() en el manual de MySQL
  #3 (permalink)  
Antiguo 14/11/2008, 18:09
 
Fecha de Ingreso: julio-2007
Ubicación: /home/victor
Mensajes: 114
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: query agrupar

muchas gracias por responder pero estoy usando postgres ???

Salu2
  #4 (permalink)  
Antiguo 15/11/2008, 09:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: query agrupar

No sabía que usabas PostgreSQL.
Aunque no manejo este motor, he leído que puede hacerse lo mismo mediante array. Esto lo he sacado de internet. Intenta aplicarlo, y mejor, si no es eso y no recibes respuesta aquí, pide el traslado al foro PostgreSQL. Creo que allí tardarán muy poco en darte la respuesta correcta.

select name, array(select seq_id from produk where name=p1.name order by seq_id) as id_of_duplicates from produk p1 group by name order by name;
  #5 (permalink)  
Antiguo 15/11/2008, 22:13
 
Fecha de Ingreso: julio-2007
Ubicación: /home/victor
Mensajes: 114
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: query agrupar

efectivamente he hecho lo siguiente
Código PHP:
select ini.ini_id,
array(
select locz_reg_id from localizacion where locz_ini_id54)
from iniciativa ini
where ini_id 
54 
pero me lo devuelve en una columna llamada ?column? y quedo perdido en esa parte

Salu2
  #6 (permalink)  
Antiguo 16/11/2008, 01:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: query agrupar

Código sql:
Ver original
  1. SELECT ini.ini_id,
  2. array(SELECT locz_reg_id FROM localizacion WHERE locz_ini_id= 54) resultados
  3. FROM iniciativa ini INNER JOIN localizacion loc ON loc.locz_ini_id = ini.ini_id
  4. WHERE ini.ini_id = 54 GROUP BY ini.ini_id

Como te he dicho, no manejo PostgreSQL, pero si tuviera que hacer algo sería poner el alias tras el paréntesis y agrupar por ini_id, y utilizar el alias en todos los campos. Además, tal vez tengas que hacer el cruce de tablas, cosa que no te he visto, aunque no sé si será necesario. Si no lo fuera te bastará con quitar la parte del inner join. Prueba a ver lo que te he puesto. Pero piensa que que te estoy proponiendo un método "prueba-error", porque desconozco el funcionamiento de array en PostgreSQL.

Suerte, espero que alguien con experiencia en PostgreSQL pueda ayudarte, pero si no ocurre aquí, pide traslado del post al foro específico de PostgreSQL

Última edición por jurena; 16/11/2008 a las 01:44
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:26.