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

Consulta por conteo

Estas en el tema de Consulta por conteo en el foro de Bases de Datos General en Foros del Web. 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: ...
  #1 (permalink)  
Antiguo 01/03/2011, 09:52
 
Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años, 2 meses
Puntos: 0
Consulta por conteo

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

Etiquetas: bases-de-datos
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 00:15.