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

Calcular afinidad entre usuarios en una única consulta MySQL

Estas en el tema de Calcular afinidad entre usuarios en una única consulta MySQL en el foro de Bases de Datos General en Foros del Web. No se si esto se puede hacer de una tacada sin usar PHP soy administrador de sistemas y la programación no es lo mío pero ...
  #1 (permalink)  
Antiguo 07/02/2020, 04:53
 
Fecha de Ingreso: abril-2009
Mensajes: 58
Antigüedad: 15 años
Puntos: 0
Calcular afinidad entre usuarios en una única consulta MySQL

No se si esto se puede hacer de una tacada sin usar PHP soy administrador de sistemas y la programación no es lo mío pero intento mejorar día a día.

Resulta que tengo 3 tablas:
-una de usuarios, campo clave usuario_id
-una de items, campo clave item_id
-y una tercera donde relacciono usuario_id con item_id

en esa tercera cada usuario puede estar relaccionado con hasta 10 item_id.
me gustaría calcular la afinidad de usuarios de una tacada en sql sin usar php ni hacer dos consultas. Es decir que metas el id de un usuario y te devuelva las id de los usuarios con mas items en comun y el numero de coincidencias.

había pensado en sacar primero una lista de ids de items ese usuario, con esa un left joint con la de usuarios y sobre ese resultado un Count con un group by por usuario, pero no me da salido. ¿Alguien puede ayudarme?
  #2 (permalink)  
Antiguo 07/02/2020, 14:03
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: Calcular afinidad entre usuarios en una única consulta MySQL

Es una consulta bastante trabajada, para obtener los id de usuarios en comun podria ser una consulta anidada.

select * from a where a.campo1 in (select ids from ab where ab.id = idUsuario)

Algo como eso ya para obtener el numero de coincidencias seria pensarle y rebuscarle un poco mas

Etiquetas: calcular, mysql, usuarios
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 13:13.