JOIN Y COMPARACIONES

06/10/2007 - 17:13 por Francisco | Informe spam
Hola, buenas tardes:

Estoy intentando comparar dos tablas a través de un "Join", el caso es que
en una tabla tengo un campo que tiene un número de teléfono; en la otra
tabla tengo otro campo que contiene al menos dos números de teléfono. Lo que
quiero hacer es que compare ambas tablas para que busque uno de los dos
números de teléfono y me de el nombre del Proveedor que ha llamado. He
probado de varias formas pero solo me compara con el primer número y por
tanto despues no sigue la busqueda.

TABLA_CALL_LOG

HORA DE LLAMADA TELEFONO
06/10/07 91254788


TABLA PROVEEDORES

PROVEEDOR TELEFONOS
CARNICERIA 91254789 91254788

Lo que quiero es que el "join" pueda buscar el segundo número tambien y
devolverme el nombre del que llama.

Ahora mismo lo tengo así:

SELECT dbo.[callLog-2007-10].Telefono,
dbo.PROVEEDORES_UNION.NomProveedor, dbo.PROVEEDORES_UNION.Telefono

FROM dbo.[callLog-2007-10] LEFT OUTER JOIN
dbo.PROVEEDORES_UNION ON
dbo.[callLog-2007-10].Telefono = dbo.PROVEEDORES_UNION.Telefono

Muchas gracias.
 

Leer las respuestas

#1 Alejandro Mesa
07/10/2007 - 01:54 | Informe spam
Hola Francisco,

Los dos #s de telefono estan almacenado en la misma columna?

En ese caso te recomiendo que veas la posibilidad de normalizar esa tabla.
El valor de una columna debe ser atomico, no un grupo o lista.

Cuando espongas este tipo de problemas, se recomienda que se postee la
estructura de las tablas involucradas, data de ejemplo en forma de sentencias
"insert" y resultado esperado. La ayuda debe ser mutua, no crees?

Como no nos dices cual es el tipo de dato de ambas columnas, voy a suponer
que son VARCHAR, entonces puedes usar

SELECT
a.Telefono,
b.NomProveedor,
b.Telefono
FROM
dbo.[callLog-2007-10] as a
LEFT OUTER JOIN
dbo.PROVEEDORES_UNION as b
ON b.Telefono LIKE '%' + a.Telefono + '%'
go

Nota que ese tipo de expresion no ayuda a que el optimizador de queries use
las estadisticas de los indices, en caso de que estos existan, ya que se esta
manipulando la columna en la expresion.


AMB

"Francisco" wrote:

Hola, buenas tardes:

Estoy intentando comparar dos tablas a través de un "Join", el caso es que
en una tabla tengo un campo que tiene un número de teléfono; en la otra
tabla tengo otro campo que contiene al menos dos números de teléfono. Lo que
quiero hacer es que compare ambas tablas para que busque uno de los dos
números de teléfono y me de el nombre del Proveedor que ha llamado. He
probado de varias formas pero solo me compara con el primer número y por
tanto despues no sigue la busqueda.

TABLA_CALL_LOG

HORA DE LLAMADA TELEFONO
06/10/07 91254788


TABLA PROVEEDORES

PROVEEDOR TELEFONOS
CARNICERIA 91254789 91254788

Lo que quiero es que el "join" pueda buscar el segundo número tambien y
devolverme el nombre del que llama.

Ahora mismo lo tengo así:

SELECT dbo.[callLog-2007-10].Telefono,
dbo.PROVEEDORES_UNION.NomProveedor, dbo.PROVEEDORES_UNION.Telefono

FROM dbo.[callLog-2007-10] LEFT OUTER JOIN
dbo.PROVEEDORES_UNION ON
dbo.[callLog-2007-10].Telefono = dbo.PROVEEDORES_UNION.Telefono

Muchas gracias.



Preguntas similares