Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-11-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 21
ElDioni Va por buen camino
Puede que hayas agrupado mal las comparaciones en los parentesis y por eso no te de el resultado deseado.

Según lo que has puesto si elimino los parentesis que encierran una única comparación me queda algo así:

Código SQL [-]
a.CALLTYPE = 'I' OR (a.CALLTYPE = 'O' AND a.RESULT IN ('10','18','1004') AND a.PHONE <> '')

entonces te mostraría todas las llamadas de tipo "I" o todas las llamadas de tipo "O" cuyo resultado esté en 10,18 y 1004 y el teléfono no esté vacio, tienen que cumplirse las tres condiciones. ¿es eso lo que realmente quieres?, si es así no le veo nada raro.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #2  
Antiguo 12-11-2012
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 23
jars Va por buen camino
Gracias amigos por responder.
La macana la cometi yo, me falto agregar un parentesis que agrupe todo exceptuando la fecha.
Quedaria asi:
Código SQL [-]
SELECT a.logdate, a.logtime, a.node, a.channel, a.phone, a.lengthcall, a.calltype, a.campaign, a.taxid, b.posnumber, b.agentid, b.skill FROM LOGCALL a LEFT OUTER JOIN logpos b on (a.callrefid = b.callrefid) where a.logdate = '20120702' and ((a.CALLTYPE = 'I') OR ((a.CALLTYPE = 'O') AND (a.RESULT IN ('10','18','1004')) AND (a.PHONE <> '')))

Asi funciona en forma correcta.
Mil gracias.
Responder Con Cita
  #3  
Antiguo 12-11-2012
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 23
jars Va por buen camino
Otra vez con problemas.
Ahora me encuentro con esta otra condicion que no se como resolver.
Es sobre el mismo query:

Código SQL [-]
SELECT a.callrefid,  a.callrefid1, a.logdate, a.logtime, a.node, a.channel, a.phone, a.lengthcall, a.calltype, a.campaign, a.taxid,
b.posnumber, b.agentid, b.skill
FROM LOGCALL a LEFT OUTER JOIN logpos b on (a.callrefid = b.callrefid)
where a.logdate between '20120701' and '20120707'
and ((a.CALLTYPE = 'I') OR ((a.CALLTYPE = 'O') AND (a.RESULT IN ('10','18','1004')) AND (a.PHONE <> '')))

En el on (a.callrefid = b.callrefid) es donde tengo el problema.
Si a.callrefid1 <> ' ' and a.callrefid1 <> '*' then
on (a.callrefid1 = b.callrefid)
else
on (a.callrefid = b.callrefid)

Tengo que poder poner esa condicion.
Es posible?
Responder Con Cita
  #4  
Antiguo 13-11-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 21
ElDioni Va por buen camino
No entiendo que quieres conseguir,

si lo que quieres es eliminar los registros de a donde no estén vacios o sean un * añade esas condiciones al WHERE.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita
  #5  
Antiguo 13-11-2012
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 23
jars Va por buen camino
Hay dos campos callrefid y callrefid1.
callrefid1 generalmente viene en blanco o con un '*', si no es asi quiere decir que hay que tomar ese dato para la condicion del ON

En el on (a.callrefid = b.callrefid) es donde tengo el problema.
Si a.callrefid1 <> ' ' and a.callrefid1 <> '*' then
on (a.callrefid1 = b.callrefid) -- uso callrefid1
else
on (a.callrefid = b.callrefid) -- uso callrefid
Responder Con Cita
  #6  
Antiguo 13-11-2012
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 688
Poder: 21
olbeup Va camino a la fama
Cita:
Empezado por jars Ver Mensaje
Hay dos campos callrefid y callrefid1.
callrefid1 generalmente viene en blanco o con un '*', si no es asi quiere decir que hay que tomar ese dato para la condicion del ON

En el on (a.callrefid = b.callrefid) es donde tengo el problema.
Si a.callrefid1 <> ' ' and a.callrefid1 <> '*' then
on (a.callrefid1 = b.callrefid) -- uso callrefid1
else
on (a.callrefid = b.callrefid) -- uso callrefid
Si lo que quieres es enlazar a.callrefid y a.callrefid1 con b.callrefid lo que tienes que hacer es poner otro
Código SQL [-]
    LEFT JOIN LogPos C
      ON C.callrefid1 = B.callrefid
Un saludo

P.D.: Muestra tú SQL más elegante en el futuro, no realices la SQL en una sola línea, si pones los nombre en minúscula pues todos en minúscula tanto en el SELECT como en el WHERE, es incomodo a la hora de leerla.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #7  
Antiguo 13-11-2012
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 23
jars Va por buen camino
Gracias OLBEUP por el aporte y los concejos.
Abrazo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ayuda con select en dos tablas n03l Firebird e Interbase 4 01-09-2012 20:06:47
Hacer un select a 2 tablas de 2 gdb´s. AMINOA2R Firebird e Interbase 6 25-01-2008 15:45:43
Select con dos tablas enecumene MySQL 2 22-02-2007 20:13:22
Select en varias tablas sitrico Firebird e Interbase 2 29-12-2006 00:09:57
5 select de 5 tablas diferentes en un select solo sakuragi SQL 6 15-06-2005 18:57:06


La franja horaria es GMT +2. Ahora son las 17:54:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi