Hola oripoll:
Lo que quieres hacer no es dificil, sin embargo tu modelo de datos no ayuda mucho... desde mi punto de vista tienes un mal diseño, pero bueno, me voy a enfocar en el problema sin ir a la raiz, para el ejemplo voy a suponer que tienes tus datos más o menos así:
Código:
mysql> SELECT * FROM tabla;
+------+------+------+------+------+------+
| id | L1 | L2 | L3 | L4 | L5 |
+------+------+------+------+------+------+
| 1 | L | L | X | F | L |
| 2 | X | X | X | L | L |
| 3 | L | L | L | L | L |
| 4 | X | L | X | F | X |
| 5 | L | F | F | F | F |
+------+------+------+------+------+------+
5 rows in set (0.00 sec)
Por cuestiones de espacio (y flojera, lo admito) sólo puse 5 columnas, para obener el total de L's, X's y F's que tiene cada id, lo puedes hacer de dos formas, una sería en forma de columnas, así:
Código MySQL:
Ver original -> id,
-> IF(L1
= 'L', 1, 0) + IF(L2
= 'L', 1, 0) + IF(L3
= 'L', 1, 0) + IF(L4
= 'L', 1, 0) + IF(L5
= 'L', 1, 0) total_l
, -> IF(L1
= 'X', 1, 0) + IF(L2
= 'X', 1, 0) + IF(L3
= 'X', 1, 0) + IF(L4
= 'X', 1, 0) + IF(L5
= 'X', 1, 0) total_x
, -> IF(L1
= 'F', 1, 0) + IF(L2
= 'F', 1, 0) + IF(L3
= 'F', 1, 0) + IF(L4
= 'F', 1, 0) + IF(L5
= 'F', 1, 0) total_f
+------+---------+---------+---------+
| id | total_l | total_x | total_f |
+------+---------+---------+---------+
| 1 | 3 | 1 | 1 |
| 2 | 2 | 3 | 0 |
| 3 | 5 | 0 | 0 |
| 4 | 1 | 3 | 1 |
| 5 | 1 | 0 | 4 |
+------+---------+---------+---------+
Básicamente consiste en reemplazar las letras por 1's y después contar cada tipo. La otra forma sería un poco más "simple", y sería hacerlo en forma de renglones:
Código MySQL:
Ver original -> id
, campo
, COUNT(*) total
-> (
-> ) T
+------+-------+-------+
| id | campo | total |
+------+-------+-------+
| 1 | F | 1 |
| 1 | L | 3 |
| 2 | L | 2 |
| 3 | L | 5 |
| 4 | F | 1 |
| 4 | L | 1 |
| 5 | F | 4 |
| 5 | L | 1 |
+------+-------+-------+
11 rows
in set (0.00 sec
)
Dale un vistazo a ver si alguna de las dos te puede servir.
Saludos
Leo.