Hola a todos/as
Tengo un problema un poco espeso con un query ya que mi nivel de sql no es muy alto
Intentare explicarme lo mejor posible,a ver si alguien entiende este cacao y puede exarme un cable
La web es tipo meetic,los usuarios se registran y rellenan un perfil.Tambien rellenan un perfil de que es lo que buscan en la otra persona.
Entonces tenemos dos registros,lo que soy y lo que busco,bien,la cuestion es hacer que cuantas mas compatibilidades haya entre lo que un usuario busca y lo que las otras usuarias han puesto que ellas son aparezcan mas arriba en la busqueda
Lo he intentado creando variables y sumandoles uno si cumplian la condicion,pero solo funciona en el primer if,despues,aunque la condicion sea cierta no me suma uno.
Pongo el codigo por si alguien sabria darme otra opcion o decirme que puede estar mal,tambien para el que le pueda interesar
a- = arroba,no me dejaba postear poniendo arrobas,para declarar variables ponia arroba
SELECT a-total1 := 0, a-total2 := 0, a-total7 := 0, a-total8 := 0, a-total9 := 0, a-total10 := 0, a-total11 := 0;
SELECT clients.idClient,
clients.anuncio,
clients.alta,
clients21.fecha_de_nacimiento,
clients21.busco_desde,
clients21.busco_hasta,
clients.onLine,
clients.navigationMode,
(SELECT archivo FROM photos WHERE tipo=1 AND idClient = clients.idClient) AS archivo,
clients.usuario,
clients21.poblacion,
clients21.provincia,
paisesISO.paisES AS pais,
IF(respuestas21.idFormPregunta ='1' AND valorClientRespuesta IN(2), a-total1 := 1, a-total1 :=0) AS total1,
IF(respuestas21.idFormPregunta ='2' AND valorClientRespuesta IN(2), a-total2 := 1, a-total2 :=0) AS total2,
IF(respuestas21.idFormPregunta ='7' AND valorClientRespuesta IN(2), a-total7 := 1, a-total7 :=0) AS total7,
IF(respuestas21.idFormPregunta ='8' AND valorClientRespuesta IN(2), a-total8 := 1, a-total8 :=0) AS total8,
IF(respuestas21.idFormPregunta ='9' AND valorClientRespuesta IN(1), a-total9 := 1, a-total9 :=0) AS total9,
IF(respuestas21.idFormPregunta ='10' AND valorClientRespuesta IN(1,2), a-total10 := 1, a-total10 :=0) AS total10,
IF(respuestas21.idFormPregunta ='11' AND valorClientRespuesta IN(1,2), a-total11 := 1, a-total11 :=0) AS total11,
a-total1+ a-total2+ a-total7+ a-total8+ a-total9+ a-total10+ a-total11 AS totalResultado
FROM clients
INNER JOIN clients21 ON clients.idClient = clients21.idClient
LEFT OUTER JOIN respuestas21 ON clients.idClient = respuestas21.idClient
INNER JOIN paisesISO ON clients21.pais = paisesISO.acro
AND clients.idClient NOT IN ('')
AND clients.idClient <>2621
GROUP BY clients.idClient ORDER BY totalResultado DESC
En el primer SELECT creo las variables
La primera parte del segundo SELECT es donde recojo campos normales,edad,poblacion etc....
Despues cuando empiezan los IF es donde pregunto si ha contestado a esa respuesta y si tiene un valor determinado,en caso de que sea correcto cojo la variable correspondiente a esa pregunta y le sumo uno
Despues de los IFS intento sumar todas las variables
Al final ordeno por estos valores.
El problema es que solo comprueba el primer IF,ahi si me dice si la ha contestado bien o no,pero en los siguientes no
Gracias de nuevo a todos/as