Hola zubintro:
Se me ocurren algunas ideas para hacer una consulta un poco más sencilla que la que propone jurena, pero no me queda del todo claro cómo es que necesitas tu información. Veamos este caso, podrías utilizar UNION para hacer una sola tabla donde conviertas las columnas a renglones, y una vez que hagas esto, entonces simplemente hacer un COUNT, es decir, algo como esto:
Código MySQL:
Ver original+------+------+------+------+------+------+
| id | R1 | R2 | R3 | R4 | R5 |
+------+------+------+------+------+------+
| 1 | 1 | 1 | 2 | 5 | 5 |
| 2 | 5 | 1 | 5 | 3 | 5 |
| 3 | 5 | 5 | 1 | 3 | 2 |
+------+------+------+------+------+------+
-> (
+------+-------+----------+
| id | valor | cantidad |
+------+-------+----------+
| 1 | 1 | 2 |
| 1 | 2 | 1 |
| 1 | 5 | 2 |
| 2 | 1 | 1 |
| 2 | 3 | 1 |
| 2 | 5 | 3 |
| 3 | 1 | 1 |
| 3 | 2 | 1 |
| 3 | 3 | 1 |
| 3 | 5 | 2 |
+------+-------+----------+
10 rows
in set (0.00 sec
)
De aquí se observa para cada id el valor que poseé y cuántas veces se repite este valor... ahora bien, si esta información la necesitas presentar en un solo registro, separado por comas, podrías utilizar la función GROUP_CONCAT, más o menos así:
Código MySQL:
Ver original -> (
-> (
-> ) T1
-> ) T2
+-----------------------------------------------------------------------------+
| campo |
+-----------------------------------------------------------------------------+
| El id = 1 tiene 2 veces el # 1,1 veces el # 2,2 veces el # 5 |
| El id = 2 tiene 1 veces el # 1,1 veces el # 3,3 veces el # 5 |
| El id = 3 tiene 1 veces el # 1,1 veces el # 2,1 veces el # 3,2 veces el # 5 |
+-----------------------------------------------------------------------------+
Saludos
Leo.