Ver Mensaje Individual
  #8 (permalink)  
Antiguo 27/12/2013, 10:18
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 1 mes
Puntos: 2658
Respuesta: tabla dinamica

OK. Ahora se entiende mejor...
Lo que necesitas obtener es lo que se denomina "tabla inversa".
Bueno, eso tiene dos soluciones, pero la más simple de todas es programática.

Me explico.
La consulta sólo puede obtener los datos puros de la tabla que tienes. MySQL, que es el DBMS que usas, no tiene funciones ni clausulas que puedan crear tablas inversas. Para lograrlo deberías hacer una consulta con N JOINs, uno por cada tarjeta que exista registrada. Es un tipo de consulta sumamente ineficiente, y no es recomendable en este DBMS (Si usases otro, la cosa cambia).
A nivel de SQL, la cosa sería mas o menos así:
Código MySQL:
Ver original
  1. SELECT tj1.cuota, tj1.coeficiente Visa, tj2.coeficiente  AmeX
  2. FROM coeficientes tj1 INNER JOIN coeficientes tj2 ON tj1.cuota = tj2.cuota
  3. WHERE tj1.tc = 'VI' AND tj2.tc = 'AX';
  4. ORDER BY  tj1.cuota;
Obviamente si hay más tarjetas, se necesitan más INNER JOIN con otros alias tanto en las tablas como en las columnas.
Si además una de las TJ no tiene todos los tipos de cuota, o tiene más, ya esta query no es funcional y hay que hacer uso del LEFT JOIN y funciones de conversion de null (IFNULL()) para evitar datos nulos.
Se complica mucho.


A nivel programático lo que haces es recorrer el resultado de esa query base y vas armando las columnas en función de los datos que encuentras. No es muy corto, pero se puede hacer.

En ese caso la query es simplemente:
Código MySQL:
Ver original
  1. SELECT cuota, tj, coeficiente
  2. FROM coeficientes
  3. ORDER BY tj, cuota
y la construccion visual de la tabla la haces por PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 27/12/2013 a las 12:19