Ver Mensaje Individual
  #8 (permalink)  
Antiguo 03/07/2008, 05:55
darthsmog
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Encapsular consultas

Las variables llevan valor 1 ó 0 en función de un checkbox. El SELECT lo ejecuta un DataSet de Java. Pero probándolo desde el gestor PgAdmin, también me encuentro con el mismo problema.
Lo estoy aislando todo lo posible, y aquí es donde me bloqueo:

Las subconsultas añadidas a una consulta genérica independientes una de otra...

SELECT * FROM muestra
LEFT OUTER JOIN (SELECT DISTINCT muestraid
FROM ensayo_muestra
WHERE (estadoalbaran = 0 OR estadoalbaran IS NULL) AND inactivo IS NULL
) pendientes ON pendientes.muestraid = muestra.muestraid
WHERE pendientes.muestraid IS NOT NULL

SELECT * FROM muestra
LEFT OUTER JOIN (SELECT DISTINCT ensayo_muestra.muestraid
FROM ensayo_muestra WHERE ensayo_muestra.inactivo IS NULL
EXCEPT
SELECT DISTINCT ensayo_muestra.muestraid
FROM ensayo_muestra
JOIN actas_archivo ON actas_archivo.ensayo_muestraid = ensayo_muestra.ensayo_muestraid
WHERE (acta_clase = 1 OR acta_clase IS NULL)
)sin_actas ON sin_actas.muestraid = muestra.muestraid
WHERE sin_actas.muestraid IS NOT NULL


... funcionan perfectamente (he quitado las variables incluso). Pero si las junto ambas en una consulta...

SELECT * FROM muestra
LEFT OUTER JOIN (SELECT DISTINCT ensayo_muestra.muestraid
FROM ensayo_muestra WHERE ensayo_muestra.inactivo IS NULL
EXCEPT
SELECT DISTINCT ensayo_muestra.muestraid
FROM ensayo_muestra
JOIN actas_archivo ON actas_archivo.ensayo_muestraid = ensayo_muestra.ensayo_muestraid
WHERE (acta_clase = 1 OR acta_clase IS NULL)
) sin_actas ON sin_actas.muestraid = muestra.muestraid
LEFT OUTER JOIN (SELECT DISTINCT muestraid
FROM ensayo_muestra
WHERE (estadoalbaran = 0 OR estadoalbaran IS NULL) AND inactivo IS NULL
) pendientes ON pendientes.muestraid = muestra.muestraid
WHERE sin_actas.muestraid IS NOT NULL AND pendientes.muestraid IS NOT NULL


.. Aquí ya revienta.

Es curioso porque esto mismo con las tablas auxiliares funcionaba perfectamente. Y ya digo que en SQL Server va como un tiro.

De momento creo que voy a soñar con esta query