Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/08/2013, 19:14
Avatar de Marea2
Marea2
 
Fecha de Ingreso: febrero-2008
Mensajes: 71
Antigüedad: 16 años, 8 meses
Puntos: 0
Respuesta: MySQL mostrar segun numero de coincidencias

Hola,

Toda la información esta almacenada en una misma tabla llamada 'usuarios'.

En esta tabla hay 6 campos: 'id', 'municipio', 'asign1', 'asign2', 'asign3', 'asign4'. Estos 6 campos contienen información de profesores particulares. 'Id' es un 'bigint' con auto_increment.

El campo 'municipio' es de tipo 'int', en el que se escribe el municipio en que vive el profesor con un numero (ej. Barcelona ->3 ).

Finalmente, en 'asign1', 'asign2', 'asign3', 'asign4' (varchar) se encuentran las asignaturas que el profesor enseña. Se escribe de forma abreviada (Ej. matemáticas -> mate ).

Por ejemplo, tenemos:


+---------+-------------+------------+-----------+----------+---------------+
| id | municipio | asign1 | asign2 | asign3 | asign4 |
|--------------------------------------------------------------------------------+
| 100 | 3 | mate | quim | biol | diss |
|----------------------------------------------------------------------------------
| 101 | 3 | quim | lles | diss | mate |
|---------------------------------------------------------------------------------
| 102 | 3 | mate | llca | lica | fisi |
|----------------------------------------------------------------------------------
| 103 | 3 | diss | llca | lica | fisi |
|----------------------------------------------------------------------------------
| 104 | 4 | quim | fisi | diss | biol |
|----------------------------------------------------------------------------------

Entonces, tal y como he explicado en la primera entrada, en la consulta no solo busco los profesores que den exactamente las 4 asignaturas que quiere el alumno, sino que me gustaría que salieran los profesores que dan 3 de estas 4 asignaturas, y después 2 de estas 4 asignaturas, hasta llegar a los que dan 1 de estas 4 asignaturas. Esto es, que la consulta ordene las 'id' de los profesores según el numero de asignaturas coincidentes, empezando por los que coinciden 4 de 4, hasta los 1 de 4.


Si en la consulta, quiero buscar un profesor según las asignaturas: mate, quim y biol; y en el municipio '3'.

El resultado seria:

+----------+
| id |
+----------+
| 100 | //coincide con las 3 asignature de la busqueda ( mate, quim y biol )
|-----------+
| 101 | //coincide con 2 asignaturas de la busqueda ( mate y quim)
|-----------+
| 102 | // coincide con 1 asignaturas de la busqueda ( mate )
|-----------+


El orden es de mas coincidencias a menos, hasta llegar a una sola coincidencia.
Espero que me haya echo entender.

Muchas gracias y si hay alguna duda ruego que me preguntéis.
__________________
www.chuletacreator.com "Copia con estilo"