Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Ordenar por coincidencia (¿chorrada?)

Estas en el tema de Ordenar por coincidencia (¿chorrada?) en el foro de Mysql en Foros del Web. Buenas. Vamos a ver si podéis ayudarme. Resulta que tengo una tabla que relaciona productos y palabras clave asociadas, de este estilo: Código: product_id keyword_id ...
  #1 (permalink)  
Antiguo 02/12/2007, 07:40
Avatar de qwerty_wq  
Fecha de Ingreso: enero-2005
Mensajes: 109
Antigüedad: 19 años, 3 meses
Puntos: 1
Ordenar por coincidencia (¿chorrada?)

Buenas. Vamos a ver si podéis ayudarme. Resulta que tengo una tabla que relaciona productos y palabras clave asociadas, de este estilo:

Código:
product_id    keyword_id
----------    ----------
1               1
1               2
1               3
2               5
2               6
2               7
2               3
3               8
3               6
Luego hay otras dos tablas más que relacionan product_id con la información del producto y keyword_id con las keywords o palabras clave. Hasta aquí creo que se entiende.

Pues bien, lo que quiero lograr es una consulta MySQL que ordene de mayor a menor coincidencia con una serie de palabras clave dadas los productos. Es decir, que si busco un producto que tenga las keywords 1, 2 y 3, primero saque el producto que las tenga todas, luego los que tengan dos y luego los que tengan una.

Sé que se debería de poder hacer de forma simple, pero ayer me pasé unas dos horas con phpMyAdmin haciendo pruebas, con papel y lápiz delante y ni haciendo una consulta con "OR" directos, ni con JOINS ni con subconsultas, no he dado con la forma de ordenar los resultados por número de coincidencias con las palabras clave.

Creo que tendría que ser una tontería, pero no acabo de dar con ello. Si alguien puede ayudarme, le estaré muy agradecido

Muchas gracias por adelantado.

Saludos!!
  #2 (permalink)  
Antiguo 02/12/2007, 09:13
Avatar de m4xp0wer  
Fecha de Ingreso: septiembre-2007
Mensajes: 66
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: Ordenar por coincidencia (¿chorrada?)

prueba con algo así

select count(tablacuenta.keyword_id) as numclaves,tablaproducto.product_id from tabla as tablacuenta inner join tabla as tablaproducto on (tablacuenta.product_id = tablacuenta.product_id) group by tablacuenta.product_id order by numclaves

ya me contarás
  #3 (permalink)  
Antiguo 02/12/2007, 10:02
Avatar de qwerty_wq  
Fecha de Ingreso: enero-2005
Mensajes: 109
Antigüedad: 19 años, 3 meses
Puntos: 1
Re: Ordenar por coincidencia (¿chorrada?)

Muchísimas gracias, m4xp0wer, eso era lo que buscaba. Cuando ayer estaba haciendo pruebas hice varios intentos con "JOINS" y con "COUNTS" y no terminaba de verlo bien, pero ahora está todo claro.

Muchas gracias otra vez!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:07.