Ver Mensaje Individual
  #14 (permalink)  
Antiguo 17/03/2016, 04:55
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta con los resultados mas relevantes

Vamos a ver un par de conceptos, para usar los SP:
1) La meta principal de un SP es contener lógica implementada en la BBDD, no consultas simples.
2) Si creas SP para implementar consultas simples, es para segurizar los accesos a los datos.
3) Si vas a usar lógica dentro de un SP, entonces tienes que programar el proceso completo. No hacer N SP separados unitarios, salvo que quieras re-usar funciones (MySQL no maneja colecciones, asi que no puedes obtener cursores desde otro SP).
4) Si sabes programar un proceso o función en un lenguaje, entonces analiza y diseña el proceso del mismo modo, solo que usando los recursos de MySQL para rutinas programadas, tales como ciclos, iteraciones, variables internas y controladores de flujo lógico (IF / THEN /ELSE/ END IF).

Dicho esto, lo primero que debes hacer, antes que nada y esto es algo que ya intenté explicarte varias veces, es definir lo que se va a evaluar.

Hagamos la suposición de que el orden obtenido por relevancia fuese este:
Cita:
1.
2.
3.
4.
5.
6.
7.
8.
...
y que si lo ordeno por fecha fuese este:
Cita:
3.
7.
4.
8.
5.
1.
6.
2.
...
¿Cómo compatibilizas ambos órdenes?

Supongamos que la linea de corte fuese el 5. Ene se caso quedarían así: (1; 2; 3; 4; 5), pero si sigo poniendo los restantes basandome en la fecha tendría: (1; 6; 2) donde vuelven a aparecer el 1 y el 2. Y eso no tiene sentido porque me quedan fuera el 7 y el 8, que tienen menos peso de relevancia pero mayor en la fecha.

¿Se va entendiendo el problema?

Es simplemente que dos criterios independientes pueden causar un solapamiento de datos en unos casos, y la desaparición de otros, porque se trata de criterios incompatibles entre sí.

¿Qué se hace en esos casos?
Bueno es "relativamente" simple: Se debe crear una tabla o grupo de tablas que permita establecer una PONDERACION de pesos para cada una de las dos opciones, y se use para calcular un orden que tome en cuenta ambas cosas.

ESO es lo que no estás pensando.

Ahora bien, piensalo de este modo: Si tuvieses un mismo registro con IGUALES valores y ordenes de relevancia y fecha al mismo tiempo, ¿qué porcentaje de importancia le darías a la relevancia y qué porcentaje a la fecha?
De acuerdo a la respuesta podremos hacer un SP capaz de resolver ambas cosas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)