Club Delphi  
    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
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 21
jars Va por buen camino
Select a 2 tablas

Hola amigos.
Tengo el siguiente problema, en una tabla tengo registros de todas las llamadas recibidas (A) y en otra tabla tengo los registros de las llamadas que fueron atendidas por alguna persona (B). Esto es que muchas llamadas no fueron atendidas por alguien porque estaban todos ocupados.
Lo que tengo que hacer es armar una consulta que me traiga todas las llamadas (A) y los datos de quines la atendieron de (B) que como dije muchas de (A) no tienen un registro en (B). Hay un campo que es comun en ambas tablas (CallReference)y es univoco y seria este el que las relaciona. Actualmente lo que hago es extraer de (A) los registros del rango de fechas que solicita el cliente y una vez obtenido, hago el open y lo recorro de a un registro buscando el CallReference de (A) en (B), si lo encuentra tomo los datros y sino quedan en blanco. Se puede hacer todo esto con un solo Select? porque me tarda mucho tiempo.
Gracias.
Responder Con Cita
  #2  
Antiguo 12-11-2012
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 922
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Bueno al parecer tu debilidad es el lenguaje SQL...


Código SQL [-]
SELECT Llamadas.*, Atendieron.*
FROM Llamadas
LEFT OUTER JOIN Atendieron  ON (Llamadas. CallReference = Atendieron. CallReference);

Cita:
Llamadas.* te traera todos los campos de la tabla llamadas al igual que Atendieron.*, es preferible que indiques los campos que requieres
Saludos...
Responder Con Cita
  #3  
Antiguo 12-11-2012
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 21
jars Va por buen camino
Gracias CLOAYZA, y si tienes razon, me falta mucho con SQL.
Un abrazo.
Responder Con Cita
  #4  
Antiguo 12-11-2012
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 21
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
  #5  
Antiguo 12-11-2012
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
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
  #6  
Antiguo 12-11-2012
jars jars is offline
Miembro
 
Registrado: mar 2004
Posts: 283
Poder: 21
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
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 00:35:51.


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