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

Problema cuando trato de hacer un not exists.

Estas en el tema de Problema cuando trato de hacer un not exists. en el foro de Mysql en Foros del Web. Hola gente: realmente me estoy volviendo loco con esta consulta y por este motivo recurro a su ayuda. Tengo la siguiente consulta: Código: SELECT distinct ...
  #1 (permalink)  
Antiguo 24/09/2007, 07:53
 
Fecha de Ingreso: septiembre-2007
Mensajes: 2
Antigüedad: 16 años, 6 meses
Puntos: 0
Problema cuando trato de hacer un not exists.

Hola gente:
realmente me estoy volviendo loco con esta consulta y por este motivo recurro a su ayuda.
Tengo la siguiente consulta:
Código:
SELECT distinct MO.ESN, MO.USUARIO 'ACCOUNT',  MO.CONTRATO 'CONTRACT',  MO.MATRICULA 'SHIP_CODE',  MO.BARCO 'SHIP', 
DATE_FORMAT(ur.MAX_FECHA,'%d/%m/%y %H:%i:%s')  'LAST_RECEIVED', 
round((UNIX_TIMESTAMP(date_add(sysdate(), INTERVAL 3 HOUR))-UNIX_TIMESTAMP(ur.MAX_FECHA))/3600,2) 'HOURS FROM LAST', MO.IMSI, 0 'FLAG_COLOR_SQL' 
from SN_LOC_MONPESAT MO, temp_ultimos_reportes_control ur 
where MO.IMSI = ur.IMSI and  MO.PRIVADO is null and date_add(max_fecha,INTERVAL 3 MONTH) >= sysdate() and 
not exists (select 1 from esn_en_puerto eep where MO.ESN = eep.esn and ur.MAX_FECHA = eep.fecha) and
not exists (select 1 from temp_ultimos_reportes_control turc, LOC_RECORDS lc,SN_LOC_MONPESAT SLM 
where turc.imsi = lc.imsi and turc.max_fecha = lc.fecha and SLM.imsi = turc.imsi and SLM.privado is null and date_add(max_fecha,INTERVAL 3 MONTH) >= sysdate() 
group by lc.esn,lc.latitud,lc.longitud,lc.fecha,turc.imsi
having count(*) >= 3)
Esta consulta no me esta trayendo lo que yo quiero.
Si la ejecuto sin "select 1 from temp_ultimos_reportes_control turc, LOC_RECORDS lc,SN_LOC_MONPESAT SLM
where turc.imsi = lc.imsi and turc.max_fecha = lc.fecha and SLM.imsi = turc.imsi and SLM.privado is null and date_add(max_fecha,INTERVAL 3 MONTH) >= sysdate() group by lc.esn,lc.latitud,lc.longitud,lc.fecha,turc.imsi
having count(*) >= 3" me trae un montón de registros.
Cuando ejecuto esa consulta que mostré recién me trae solo un registro (cosa que esta bien).
Ahora cuando la consulta la hago tal como la mostré arriba de todo lo que no me trae nada cuando me debería traer todos los registros menos los que están en el not exists!!... Alguno tiene idea si el mysql tiene problemas con poner group by y having en el not exists??.. o alguna solución posible..

Muchas gracias.
Mariano.
  #2 (permalink)  
Antiguo 24/09/2007, 10:55
 
Fecha de Ingreso: septiembre-2007
Mensajes: 2
Antigüedad: 16 años, 6 meses
Puntos: 0
Lo pude solucionar...

Lo comento por si a alguien le sirve.
Lo que estaba pasando es que en el exists no estaba igualando los campos de la consulta del select en el cual esta el exists.
Al poner MO.ESN = lc.esn and ur.MAX_FECHA = turc.MAX_FECHA en el exists que es la clave por la cual estoy joineando el select principal anda perfecto.

Saludos.
Mariano.
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 05:16.