Hola, primero de todo felicitar por el trabajo a los administradores, la verdad que vuestra página me es de mucha ayuda. Os presento mi duda:
En la consulta que os muestro, saca un conjunto de elementos de la tabla del from principal(labo_lotes) tales que solo (y recalco el solo) esten en un estado "F" en la tabla(labo_grupmues), nuestras bases de datos son heredadas y algo mal hechas la verdad, necesitamos la mejor optimización posible a la hora de hacer consultas, esta en concreto es para un paginador de una jsp, y mi pregunta es:
¿Podrías sacarme la consulta en vez de por el método existencial, por el método de conteo? es decir contando elementos? Os lo agradecería en el alma la verdad
Un saludo y muchas gracias
/* Formatted on 2011/03/01 14:53 (Formatter Plus v4.8.8) */
SELECT l.c_lote_id, l.d_numlote, DECODE (l.e_estado, 'R', 'Registrado'),
TO_CHAR (l.f_fecreg, 'dd-mm-yyyy')
FROM labo_lotes l
WHERE l.e_estado = 'R'
AND l.c_provincia_id = 5
AND l.c_labora_id = 1
AND EXISTS (
SELECT 1
FROM labo_grupmues lg1
WHERE lg1.c_lote_id = l.c_lote_id
AND lg1.e_estado = 'F'
AND NOT EXISTS (
SELECT 1
FROM labo_grupmues lg2
WHERE lg2.c_lote_id = l.c_lote_id
AND lg2.e_estado = 'R'))
ORDER BY TO_CHAR (l.f_fecreg, 'dd-mm-yyyy') DESC
Edito:
Solo habría que tocar en los exists, es decir lo que marco en rojo a continuación, llevamos intentandolo un rato, pero tengo que terminar un pl y queremos que quede lo mejor posible
/* Formatted on 2011/03/01 14:53 (Formatter Plus v4.8.8) */
SELECT l.c_lote_id, l.d_numlote, DECODE (l.e_estado, 'R', 'Registrado'),
TO_CHAR (l.f_fecreg, 'dd-mm-yyyy')
FROM labo_lotes l
WHERE l.e_estado = 'R'
AND l.c_provincia_id = 5
AND l.c_labora_id = 1
AND EXISTS (
SELECT 1
FROM labo_grupmues lg1
WHERE lg1.c_lote_id = l.c_lote_id
AND lg1.e_estado = 'F'
AND NOT EXISTS (
SELECT 1
FROM labo_grupmues lg2
WHERE lg2.c_lote_id = l.c_lote_id
AND lg2.e_estado = 'R'))
ORDER BY TO_CHAR (l.f_fecreg, 'dd-mm-yyyy') DESC