No se con que lenguaje muestras la imagen, pero yo me olvidaria de la tabla1 y usaria directamente el hecho de que el campo de cada mes es 1 o 0 para mostrar una u otra imagen.
Un simple if en el lenguaje de programació que uses puede mostrar la imagen roja o verde en función del valor sin que este guardada en la bbdd.
Luego una simple consulta
Código:
SELECT Propiedad,
Precio_Alquiler,
Ene,
Feb,
Mar,
Abr,
...
from tab_abonos;
si guardas todos los cobros en el mismo registro o
si tus registros son así (un abono por registro)
Id_Propiedad___Precio_Alquiler_____Ene__Feb__Mar__ Abr...
1_____1________250________________1____0____0___0
2_____1________250________________0____1____0___0
3_____1________250________________0____0____1___0
4_____1________250________________0____0____0___0
...
luego usa
Código:
Select Propiedad,
Precio_Alquiler,
max(Ene),
max(Feb),
max(Mar),
max(Abr),
...
FROM tab_abonos
GROUP BY Propiedad, Precio_Alquiler;
y en ambos casos te dará
_Propiedad___Precio_Alquiler_____Ene__Feb__Mar__Ab r...
_____1________250______________1____1____1___0
leyendo este registro se puede mostrar verde o rojo en función de si es 1 o 0:
Quim
Pero incluso me plantearia redisenyar la bbdd:
Tabla 1:tab_propiedades
tab_propiedades.idPropiedad int (PK)
tab_propiedades.Precio_Alquiler decimal
Tabla 2: tab_abonos
tab_abonos.idAbono Int (PK)
tab_abonos.idPropiedad int (FK tab_propiedades.idPropiedad)
tab_abonos.fecha date
tab_abonos.anno_abono int
tab_abonos.mes_abono int (1,2,...,12)
tab_abonos.importe_abono decimal
Con esta estructura podrias controlar pagos parciales y saber cuando han pagado cada mes.
Código:
SELECT tab_propiedades.idPropiedad,
tab_propiedades.Precio_Alquiler,
abonos.anno_abono,
abonos.mes_abono,
abonos.importe,
if(tab_propiedades.Precio_Alquiler = abonos.importe,1,
if(abonos.importe<>0,2,0)) //No estoy seguro
//de la sintaxis del if
FROM tab_propiedades
INNER JOIN
(SELECT tab_abonos.idPropiedad,
tab_abonos.anno_abono,
tab_abonos.mes_abono,
sum(tab_abonos.importe_abono) as importe
FROM tab_abonos
GROUP BY tab_abonos.idPropiedad,
tab_abonos.anno_abono,
tab_abonos.mes_abono) as abonos //sumamos abonos parciales
ON tab_propiedades.idPropiedad=abonos.idPropiedad
ORDER BY tab_propiedades.idPropiedad,
tab_propiedades.Precio_Alquiler,
abonos.anno_abono,
abonos.mes_abono;
resultado
idPropiedad__Precio_Alquiler__anno_abono__mes_abon o__importe__Abonado
____1_________250__________2008_________1________2 50______1
____1_________250__________2008_________2________2 50______1
....
Abonado 0=Pendiente de pago, 1=Pagado, 2=Pago parcial
Que con un poco de programación podrà generar el mismo output pero con una bbdd mucho mas simple, con mas informació y ocupando menos espacio...