Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/09/2009, 05:50
Nexus333
 
Fecha de Ingreso: octubre-2008
Mensajes: 14
Antigüedad: 15 años, 6 meses
Puntos: 0
<b>Please!!!!Condiciones en una query</b>

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

Última edición por Nexus333; 24/09/2009 a las 06:42