Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/11/2015, 08:29
Avatar de NLeone
NLeone
 
Fecha de Ingreso: junio-2012
Ubicación: Buenos Aires.
Mensajes: 22
Antigüedad: 11 años, 11 meses
Puntos: 0
Subsonculta a la misma tabla para generar vista.

Hola estimados!!!

Tengo un inconveniente y no logro resolverlo, entiendo el tema de subconsultas, pero no me arroja resultados cuando la realizo a la misma tabla, he visto ejemplos pero no es lo que busco, con inner join , etc.

El tema es que tengo una tabla padronBeneficiarios con campos relacionados a otras tablas como ser provincias, codigoEstado, codParentesco, etc. Entonces busco mostrar en una vista los campos con los datos bien representados, por ejemplo si el código de parentesco es 1, quiero que en vez de mostrar el número 1 al usuario le muestre que es 'titular'. Y así con todo.

La tabla padronBeneficiarios me la provee un organismo del Estado por eso no puedo modificar su estructura, y las tablas auxiliares son las que me proveen los datos para realizar las combinaciones.

Dejo la query como más o menos la tengo armada:

Código MYSQL:
Ver original
  1. SELECT a.id, a.codObraSocial, a.cuitEmpleador,
  2. (SELECT k.apenomDetail FROM detailDdjjPadron k WHERE k.cuitDetail = a.cuitEmpleador) as 'razonSocial',
  3. a.cuilTitular,
  4. (SELECT b.descripcion FROM codParentescoSSS b WHERE b.id = a.codParentesco) as 'parentesco',
  5. a.cuilCuil,
  6. (SELECT c.tipoDocumento FROM tipoDocSSS c WHERE c.id = a.tipoDocumento) as 'tipoDocumento',
  7. a.numeroDocumento, a.apellidoNombre, a.sexo,
  8. (SELECT d.descripcion FROM estadoCivilSSS d WHERE d.id = a.estadoCivil) as 'estadoCivil',
  9. a.fechaNacimiento,
  10. (SELECT e.descripcion FROM nacionalidadSSS e WHERE e.id = a.nacionalidad) as 'nacionalidad',
  11. a.calle, a.numeroPuerta, a.piso, a.departamento, a.localidad, a.codigoPostal,
  12. (SELECT f.nombre FROM provinciasSSS f WHERE f.id = a.codProvincia) as 'provincia',
  13. (SELECT g.descripcion FROM tipoDomicilioSSS g WHERE g.id = a.tipoDomicilio) as 'tipoDomicilio',
  14. a.telefono, a.situacionRevista,
  15. (SELECT h.descripcion FROM incapacidadSSS h WHERE h.id = a.incapacidad) as 'incapacidad',
  16. (SELECT i.descripcion FROM tipoBenefSSS i WHERE i.id = a.tipoBeneficiario) as 'tipoBeneficiario',
  17. a.fechaAltaOS, a.fechaCierrePres, a.codMovimiento,
  18. (SELECT j.descripcion FROM estado j WHERE j.idEstado = a.idEstado) as 'estado',
  19. a.usuarioAlta, a.fechaAlta, a.usuarioModificacion, a.fechaModificacion FROM padronBeneficiarios a;

Y eso me devuelve bien los registros, pero lo que me falta es agregar algo como esto:
Código MySQL:
Ver original
  1. (SELECT q.apellidoNombre FROM padronBeneficiarios q WHERE q.cuilTitular = a.cuilCuil) as 'titular'

Como para obtener el apellido y nombre que se encuentra en la misma tabla, que sea igual al cuilCuil del registro que esté comparando. Para mostrar al lado el nombre del titular de la obra social.

Bueno espero que más o menos se haya entendido mi problemática, y obviamente no logro darme cuenta cómo solucionarlo, por eso recurro a ustedes.

Muchas gracias y cualquier respuesta será bienvenida, saludos!!

Última edición por gnzsoloyo; 30/11/2015 a las 10:54