Forums Últimos mensajes - Powered by IBM
 

Problema con JOINS

22/11/2006 - 16:32 por UsuarioNovato | Informe spam
Buenas, estoy revisando una aplicación que hace un select a una base de
datos de la siguiente manera

SELECT A.CODIGO, A.FECHA, A.CEDULA, B.NOMBRE, C.DESCRIPCION
FROM DETALLE A, CLIENTE B, ARTICULO C
WHERE (A.CODIGO LIKE '%0074%'
OR CONVERT(CHAR(10),A.FECHA, 113) LIKE '%0074%'
OR A.CEDULA LIKE '%0074%'
OR isnull(B.NOMBRE,'') LIKE '%0074%'
OR isnull(C.DESCRIPCION,'') LIKE '%0074'
)
AND ( A.CEDULA *= B.CEDULA
AND A.CODIGO *= C.CODIGO)

La idea de este, es hacer un filtro por todos los campos donde me muestre
todas las coincidencias, en cualquiere campo, de un valor.

El problema es que deberia solo mostrarme 5 registros, pero me muestra
todos, no respeta el filtro

lo hice utilizando JOINS y funciona bien

SELECT A.CODIGO, A.FECHA, A.CEDULA, B.NOMBRE, C.DESCRIPCION
FROM DETALLE A
LEFT OUTER JOIN CLIENTE B
ON A.CEDULA = B.CEDULA
LEFT OUTER JOIN ARTICULO C
ON A.CODIGO = C.CODIGO
WHERE (A.CODIGO LIKE '%0074%'
OR CONVERT(CHAR(10),A.FECHA, 113) LIKE '%0074%'
OR A.CEDULA LIKE '%0074%'
OR B.NOMBRE LIKE '%0074%'
OR C.DESCRIPCION LIKE '%0074'
)
El problema es que no puedo modificar la aplicaciòn para que lo haga de esta
manera... alguien sabe porque puede estar sucediendo esto?
 

Leer las respuestas

#1 Maxi
22/11/2006 - 17:14 | Informe spam
Hola, la primer sentencia no es recomendada usar en sql2k y ya en 2005 no es
mas compatible., una de las recomendaciones de no usarla es porque puede
retornar valores no deseados


Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker

"UsuarioNovato" escribió en el mensaje
news:%
Buenas, estoy revisando una aplicación que hace un select a una base de
datos de la siguiente manera

SELECT A.CODIGO, A.FECHA, A.CEDULA, B.NOMBRE, C.DESCRIPCION
FROM DETALLE A, CLIENTE B, ARTICULO C
WHERE (A.CODIGO LIKE '%0074%'
OR CONVERT(CHAR(10),A.FECHA, 113) LIKE '%0074%'
OR A.CEDULA LIKE '%0074%'
OR isnull(B.NOMBRE,'') LIKE '%0074%'
OR isnull(C.DESCRIPCION,'') LIKE '%0074'
)
AND ( A.CEDULA *= B.CEDULA
AND A.CODIGO *= C.CODIGO)

La idea de este, es hacer un filtro por todos los campos donde me muestre
todas las coincidencias, en cualquiere campo, de un valor.

El problema es que deberia solo mostrarme 5 registros, pero me muestra
todos, no respeta el filtro

lo hice utilizando JOINS y funciona bien

SELECT A.CODIGO, A.FECHA, A.CEDULA, B.NOMBRE, C.DESCRIPCION
FROM DETALLE A
LEFT OUTER JOIN CLIENTE B
ON A.CEDULA = B.CEDULA
LEFT OUTER JOIN ARTICULO C
ON A.CODIGO = C.CODIGO
WHERE (A.CODIGO LIKE '%0074%'
OR CONVERT(CHAR(10),A.FECHA, 113) LIKE '%0074%'
OR A.CEDULA LIKE '%0074%'
OR B.NOMBRE LIKE '%0074%'
OR C.DESCRIPCION LIKE '%0074'
)
El problema es que no puedo modificar la aplicaciòn para que lo haga de
esta
manera... alguien sabe porque puede estar sucediendo esto?


Preguntas similares