none
Como agrupar varios registros en uno solo con alias a los campos? RRS feed

  • Pregunta

  • Buenas noches comunidad. 

    Les comento mi situación... Tengo una bdd relacional, donde tengo una tabla de NombreDemografico (nombres), y en ellas se almacenan los nombres que tienen relacion con una persona, que a su vez tiene relacion con elemento, que a su vez tienen relacion con un expediente y que a su vez tienen relacion con una tabla llamada numero de expediente.

    La cuestión está así, quiero traer el dato de Denunciante, Victima y Responsable. Resulta que al utilizar los join en mi query, me trae todos estos nombres en registros diferentes. He intentado agruparlos, pero realmente desconozco como hacerlo ya que he tenido errores con funciones de agregado.

    En fin, aquí les dejo mi consulta...

    select 
    	a.cNumeroExpedienteFolioRH as'rh', --selecciona numero de rh
    	LTRIM(RIGHT(CONVERT(VARCHAR(20), a.dFechaApertura, 100), 7)) as 'hora', --hora en am o pm
    	CASE 
    		WHEN g.ProbableResponsable_id = det.Involucrado_id
    			THEN 1
    		ELSE 0
        END as condet,--si hay probable responsable manda 1, si no
    	cd.cNombre as'delito', -- nombre delito
    
    	CASE 
    		WHEN d.Persona_id != g.Victima_id  and d.Persona_id != g.ProbableResponsable_id
    			THEN CONCAT(e.cNombre,+' '+e.cApellidoPaterno,+' '+e.cApellidoMaterno) --COLLATE SQL_Latin1_General_CP1_CI_AS
    		ELSE null
        END as denunciante,--si la persona no es resp ni vic es denunciante
    	
    	CASE 
    		WHEN d.Persona_id = g.Victima_id  
    			THEN CONCAT(e.cNombre,+' '+e.cApellidoPaterno,+' '+e.cApellidoMaterno) --COLLATE SQL_Latin1_General_CP1_CI_AS
    		ELSE null
        END as victima,-- si la persona es la victima trae concatenado el nombre
    	
    	CASE 
    		WHEN d.Persona_id = g.ProbableResponsable_id  
    		THEN CONCAT(e.cNombre,+' '+e.cApellidoPaterno,+' '+e.cApellidoMaterno) --COLLATE SQL_Latin1_General_CP1_CI_AS
    		ELSE null 
        
    	END as responsable, --si la persona es probable responable trae concatenado el nombre
    	CONCAT(dom.ccalle,+' #'+dom.cNumeroExterior,+' '+ase.cNombreAsentamiento,+' '+ciu.cNombreCiudad,+' '+mun.cNombreMunicipio,+' '+ef.cNombre) as domm
    	
    
    	from NumeroExpediente a 
    			join Expediente b on a.Expediente_id=b.Expediente_id 
    			join elemento c on c.Expediente_id=b.Expediente_id 
    			join persona d on d.Persona_id=c.Elemento_id 
    			join NombreDemografico e on e.Persona_id=d.Persona_id 
    			join delito f on f.Expediente_id=b.Expediente_id
    			join DelitoPersona g on g.Delito_id=f.Delito_id
    			join CatDelito cd on cd.CatDelito_id=f.CatDelito_id
    			join hecho he on he.Expediente_id=b.Expediente_id
    			join Domicilio dom on dom.Domicilio_id=he.Lugar_id
    			join Asentamiento ase on ase.Asentamiento_id=dom.Asentamiento_id
    			join ciudad ciu on dom.Ciudad_id=ciu.Ciudad_id
    			join EntidadFederativa ef on ef.EntidadFederativa_id=dom.EntidadFederativa_id
    			join Municipio mun on mun.Municipio_id=dom.Municipio_id
    			left join detencion det on det.Involucrado_id= g.ProbableResponsable_id
    	where a.JerarquiaOrganizacional_id=44 and a.cNumeroExpedienteFolioRH like '%2112%' order by rh

    Con esta consulta se me arroja lo siguiente:

    RH HORA DELITO DENUNCIANTE VICTIMA RESPONSABLE

    NAY/TEP_III/RH/02112/16 2:25PM

    0


    Abandono de familiares JAZMIN  ESCALANTE ALATORRE NULL


    NULL SIRENA #39 Miguel Hidalgo Tepic Tepic Nayarit 

    NAY/TEP_III/RH/02112/16 2:25PM

    0


    Abandono de familiares NULL


    AXEL YAHIR LARA  ESCALANTE NULL

    SIRENA #39 Miguel Hidalgo Tepic Tepic Nayarit 

    NAY/TEP_III/RH/02112/16 2:25PM

    0

    Abandono de familiares NULL

    NULL CHRISTIAN GIOVANNI LARA  JIMENEZ SIRENA #39 Miguel Hidalgo Tepic Tepic Nayarit 

    Como ven, son 3 registros diferentes. Lo que estoy buscando es que en 1 solo registro se me muestren los 3 nombres para así proceder a realizar mis tablas en php más facilmente.

    Muchisimas gracias de antemano colegas. Un abrazo



    • Editado Alonso Parra jueves, 23 de junio de 2016 5:47 sin tabla
    jueves, 23 de junio de 2016 5:44

Respuestas

  • Estimado:

    Lo que debes tener presente es que hay desiciones que se toman a nivel de base de datos, y otras a nivel de UI, en este caso estas solicitando algo que sobre cargaria tu base de datos, maxime que son tres distintos registros, y todo por una facilidad a la hora de mostrar los datos en Interfaz.

    Mas bien lo que debes hacer, es investigar para hacer las cosas mas dinamicas en Interfaz de usuario, sin importar el lenguaje empleado.

    Incluso si provees un pantallazo con el resultado en excel, y como esperas visualizarlo en UI, se te puede dar un concejo mas elaborado.

    Saludos cordiales.


    Camilo Villa

    • Marcado como respuesta José De Alva jueves, 30 de junio de 2016 14:41
    viernes, 24 de junio de 2016 22:08