Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-11-2012
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 23
jars Va por buen camino
Gracias CLOAYZA, y si tienes razon, me falta mucho con SQL.
Un abrazo.
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
UUUUPPPS!!!!!
Arme esta consulta pero no me respeta lo que hay en la clausula where:

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 <> ''))
Responder Con Cita
  #3  
Antiguo 12-11-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 22
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
  #4  
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
  #5  
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
  #6  
Antiguo 13-11-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 22
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
  #7  
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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 12:41:31.


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