Ver Mensaje Individual
  #6 (permalink)  
Antiguo 30/04/2015, 22:44
Avatar de kurt_fj
kurt_fj
 
Fecha de Ingreso: septiembre-2006
Mensajes: 10
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Construcción de relaciones y consultas (Mysql)

Buenas a todos.

He conseguido los resultados que deseaba con la siguiente consulta:

Código MySQL:
Ver original
  1. a.acta_id 'acta',
  2. DATE_FORMAT(a.fecha, '%d/%m/%Y') 'f_acta',
  3. -- Origen
  4. CONCAT_WS('',co.compania,' Compañía ','(',pu.puesto,')') 'origen',
  5. -- Ente Receptor
  6. er.ente 'ente_receptor',
  7. -- Funcionario(s)
  8. GROUP_CONCAT(DISTINCT ra.siglas, ' ', fu.p_apellido, ' ', fu.p_nombre ORDER BY ra.rangos_id ASC SEPARATOR ', ') 'funcionarios',
  9. -- Fiscal
  10. CONCAT_WS(' ',fi.fis_cedula,fi.p_apellido,fi.p_nombre) 'fiscal',
  11. -- Imputado(s)
  12. GROUP_CONCAT(DISTINCT im.imp_cedula, ' ', im.p_apellido, ' ', im.p_nombre SEPARATOR ', ') 'imputados',
  13. -- Retencion(es)
  14. GROUP_CONCAT(DISTINCT re.retencion SEPARATOR ', ')'retenciones',
  15. -- usuario
  16. CONCAT_WS(' ',us.apellido,us.nombre) 'creador'
  17. FROM actas a
  18. -- Imputados(s)
  19. LEFT JOIN actas_has_imputados ahi ON ahi.fk_actas_id = a.acta_id
  20. LEFT JOIN imputados im ON im.imp_cedula = ahi.fk_imputados_cedula
  21. -- Funcionario(s)
  22. LEFT JOIN actas_has_funcionarios ahf ON ahf.fk_actas_id = a.acta_id
  23. LEFT JOIN funcionarios fu ON fu.fun_cedula = ahf.fk_funcionarios_cedula
  24. LEFT JOIN rangos ra ON ra.rangos_id = fu.fk_rangos_id
  25. -- Retencion(es)
  26. LEFT JOIN actas_has_retenciones ahr ON ahr.fk_actas_id = a.acta_id
  27. LEFT JOIN retenciones re ON re.retenciones_id = ahr.fk_retenciones_id
  28. -- Fiscal
  29. LEFT JOIN fiscales fi ON fi.fis_cedula = a.fk_fiscales_cedula
  30. -- Ente Receptor
  31. LEFT JOIN entes_receptores er ON er.ente_id = a.fk_entes_receptores_id
  32. -- Origen
  33. LEFT JOIN puestos pu ON pu.puestos_id = a.fk_puestos_id
  34. LEFT JOIN companias co ON co.companias_id = pu.fk_companias_id
  35. -- Usuario
  36. LEFT JOIN usuarios us ON us.usuario_id = a.fk_usuarios_id
  37. GROUP BY a.acta_id;

y me da como resultado:

Código MySQL:
Ver original
  1. +-----------+------------+--------------------------------+---------------+-------------------------------------------------------+
  2. | acta      | f_acta     | origen                         | ente_receptor | funcionarios                                          |
  3. +-----------+------------+--------------------------------+---------------+-------------------------------------------------------+
  4. | 1b99089c4 | 13/04/2015 | Primera Compaa (Peaje I)       | Fiscalía 1º   | TCNEL García Dilia                                    |
  5. | 1b99089c5 | 14/04/2015 | Primera Compaa (Petroguárico)  | Fiscalía 2º   | TCNEL García Dilia, TTE Rambo Jhon, SM/2 Mora Manuel  |
  6. | 1b99089c6 | 14/04/2015 | Primera Compaa (Chaguaramas)   | Fiscalía 2º   | NULL                                                  |
  7. +-----------+------------+--------------------------------+---------------+-------------------------------------------------------+
  8.  
  9. +--------------------+------------------------------------------------+--------------------------------------------------+------------------+
  10. | fiscal             | imputados                                      | retenciones                                      | creador          |
  11. +--------------------+------------------------------------------------+--------------------------------------------------+------------------+
  12. | 2468135 Cate Ali   | 12345678 Carmona Carlos                        | Persona, Arma de Fuego, Productos Varios         | González Freddy  |
  13. | 9876543 Brito Alan | 11223344 Pérez Pedro, 12345678 Carmona Carlos  | Auto, Equipos, Sustancias, Herramientas o Partes | González Freddy  |
  14. | 9876543 Brito Alan | NULL                                           | NULL                                             | González Freddy  |
  15. +--------------------+------------------------------------------------+--------------------------------------------------+------------------+

He dividido el resultado de la consulta en dos partes para mejorar la visualización.

Justo así quería que se devolviera la consulta. Solo me queda modificar el left por inner en las joins.

La forma de presentar los datos ya va por cuenta del lenguaje de programación (PHP).

Algún comentario o sugerencia sobre la consulta es bienvenida.

Última edición por kurt_fj; 30/04/2015 a las 22:49 Razón: algunas correciones en código