Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/11/2011, 08:04
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta con subquery? left join? o esta mal la estructura?

Si la relacion entre socio titular y socios adherentes es de un solo nivel, es decir un titular tiene adheridos y estos no pueden tener adheridos a su vez (en otras palabras una relación padre-hijos sin nietos). Si es así lo puedes hacer mucho mas simple con una sola tabla de la siguiente manera....

socios
codigo PK
nombre
apellido
codigotitular FK (socios.codigo)
parentesco
fechaalta

donde codigotitular es un FK referida a codigo de la misma tabla. Codigotitular será nulo cuando el socio sea titular o tendrá el valor de codigo del socio tiutlar en el caso de los adheridos... parentesco tambien será nulo en los socios titulares y guardará la filiacion en los adheridos...

Código MySQL:
Ver original
  1. SELECT s.codigo,
  2.              s.nombre,
  3.              s.apellido,
  4.              s.fechaalta,
  5.              s.parentesco,
  6.              t.apellido,
  7.              t.fechaalta
  8. FROM socios as s
  9.        LEFT JOIN socios as t
  10.            ON s.codigotitular=t.codigo;

Esta consulta te da el nombre, apellido del socio, sea o no titular, su fecha de alta y en caso de no ser titular la relacion familiar, el apellido del titular y la fecha de alta del titular....

Si un socio adherido puede a su vez ser titular teniendo el adheridos todo se complica y esta solución no sirve....padre-hijos-nietos-...

Para obtener una lista de grupos familiares solo tienes que hacer

Código MySQL:
Ver original
  1. SELECT apellido
  2. FROM socios
  3. WHERE codigotitular IS NULL;

Tambien se puede conseguir el numero de integrantes de cada grupo pero te lo dejo para que lo pienses....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 21/11/2011 a las 08:30