Problema en select (posicion de tablas en el FROM)

30/07/2004 - 12:13 por erseco | Informe spam
Hola, tengo una aplicacion que me va creando select en funcion de los
parametros que se le pasan, funciona perfectamente, pero hoy me he
encontrado con un problema, y segun tengo entendido la posicion de las
tablas en el FROM no debe influir para usarlas luego en los left join

Mi consulta es la siguiente:
SELECT Tabla1.Id, Tabla1.Nombre, Tabla1.Direccion ,Tabla2.Nota FROM
Clientes AS Tabla1, ClientesNotas AS Tabla2
LEFT JOIN Vendedores AS Tabla3 ON Tabla1.IdVendedor = Tabla3.Id AND
Tabla3.Nombre LIKE N'Juan%'

y me da el siguiente error:

El prefijo de columna 'Tabla1' no coincide con un nombre de tabla o con
un alias usado en la consulta.

Pero en cambio, si ejecuto la misma consulta cambiandole el orden de
las tablas del FROM:
SELECT Tabla1.Id, Tabla1.Nombre, Tabla1.Direccion ,Tabla2.Nota FROM
ClientesNotas AS Tabla2, Clientes AS Tabla1
LEFT JOIN Vendedores AS Tabla3 ON Tabla1.IdVendedor = Tabla3.Id AND
Tabla3.Nombre LIKE N'Juan%'

Comandos completados con éxito.

Estoy usando SQL Server 2000 sp3
¿Alguien me puede orientar sobre que está pasando?
 

Leer las respuestas

#1 Carlos Sacristan
30/07/2004 - 12:28 | Informe spam
En primer lugar, la posición de las tablas en una combinación externa
(ya sea LEFT o RIGHT) SÍ que influye, pero el error de sintaxis que te
muestra es por otra razón.

Si te fijas, en la primer consulta estás intentando crear una relación
entre ClientesNota (con el alias Tabla2) con Vendedores (alias Tabla3) y sin
embargo en los campos por los que las combinas son de la tabla con el alias
tabla1 (clientes) y el de la tabla con el alias tabla3 (vendedores).

La segunda no te falla porque estás uniendo dos tablas con la
combinación LEFT y los campos por los que las unes pertenecen a las tablas
de dicha combinación.


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"erseco" escribió en el mensaje
news:ced70s$
Hola, tengo una aplicacion que me va creando select en funcion de los
parametros que se le pasan, funciona perfectamente, pero hoy me he
encontrado con un problema, y segun tengo entendido la posicion de las
tablas en el FROM no debe influir para usarlas luego en los left join

Mi consulta es la siguiente:
SELECT Tabla1.Id, Tabla1.Nombre, Tabla1.Direccion ,Tabla2.Nota FROM
Clientes AS Tabla1, ClientesNotas AS Tabla2
LEFT JOIN Vendedores AS Tabla3 ON Tabla1.IdVendedor = Tabla3.Id AND
Tabla3.Nombre LIKE N'Juan%'

y me da el siguiente error:

El prefijo de columna 'Tabla1' no coincide con un nombre de tabla o con
un alias usado en la consulta.

Pero en cambio, si ejecuto la misma consulta cambiandole el orden de
las tablas del FROM:
SELECT Tabla1.Id, Tabla1.Nombre, Tabla1.Direccion ,Tabla2.Nota FROM
ClientesNotas AS Tabla2, Clientes AS Tabla1
LEFT JOIN Vendedores AS Tabla3 ON Tabla1.IdVendedor = Tabla3.Id AND
Tabla3.Nombre LIKE N'Juan%'

Comandos completados con éxito.

Estoy usando SQL Server 2000 sp3
¿Alguien me puede orientar sobre que está pasando?

Preguntas similares