Clausula SELECT

02/02/2008 - 02:11 por daniel | Informe spam
Hola soy nuevo en SQL, estoy aprendiendo, pero en algunos ejemplos que estoy
siguiendo, he encontrado que en la clausula SELECT que es para especificar
el o los nombres de las columnas que deseo consultar de la tabla, he visto
que algunos nombres de columnas empiezan con dos letras mas punto (.) y el
nombre de la tabla, por ejemplo:

SELECT sp.SalesPersonID FROM Sales.SalesPerson sp.

Y nose que significa ese "sp." antes del nombre de la columna ya que el
nombre de la columna solamente se llama "SalesPersonID", ademas quisiera
saber si ese "sp" del utimo en la sentencia significa un alias para la tabla
"Sales.SalesPerson".

Gracias.
 

Leer las respuestas

#1 Alejandro Mesa
02/02/2008 - 03:01 | Informe spam
Hola Daniel,

Asi mismo es. En este caso "sp" es el alias que se le da a la tabla. Cuando
la sentencia "select" incluye solo una tabla, sin sentencias correlacionadas,
derivadas, etc., entonces no es necesario usar este alias para la tabla
porque cualquier nombre de columna estara refiriendose a la tabla
referenciada. En cambio, si referenciamos varias tablas, entonces es mas
leible usar un alias por tabla y referirnos al alias en vez de al nombre de
la tabla, sobre todo cuando los nombres son un poquito largos. Tambien para
evitar que se referencie una columna que forma parte de ambas tablas, con lo
cual SQL Server no sabria a cual tabla te estas refiriendo.

select
c.CustomerID,
c.ompanyName,
oh.OrderID,
oh.OrderDate
from
dbo.Orders as oh
inner join
dbo.Customers as c
on oh.CustomerID = c.CustomerID

Es buena practica usar [AS] antes del alias, tanto en columnas como en
tablas. Ve si puedes detectar donde esta el error. El resultado debe ser
vacio, nada, pero en cambio devuelve dos conjuntos.

SELECT 1
INTERCEPT
SELECT 2

El operador INTERCEPT no existe en SQL Server. En la version 2005 contamos
con el operador INTERSEPT, el cual nos devuelve las filas que se cruzan entre
los dos conjuntos. Lo que pasa es que SQL Server interpreta que el alias de
la primera columna es INTERCEPT, es como re-escribir la sentencia asi:

SELECT 1 INTERCEPT
SELECT 2

Si usamos la palara [AS] antes del alias entonces se podria evitar la
confusion o el mal entendimiento.

SELECT 1 AS INTERCEPT
SELECT 2

SELECT 1 as c1
INTERCEPT
SELECT 2 as c1
GO

SELECT 1 as c1
INTERSEPT
SELECT 2 as c1
GO

AMB

"daniel" wrote:

Hola soy nuevo en SQL, estoy aprendiendo, pero en algunos ejemplos que estoy
siguiendo, he encontrado que en la clausula SELECT que es para especificar
el o los nombres de las columnas que deseo consultar de la tabla, he visto
que algunos nombres de columnas empiezan con dos letras mas punto (.) y el
nombre de la tabla, por ejemplo:

SELECT sp.SalesPersonID FROM Sales.SalesPerson sp.

Y nose que significa ese "sp." antes del nombre de la columna ya que el
nombre de la columna solamente se llama "SalesPersonID", ademas quisiera
saber si ese "sp" del utimo en la sentencia significa un alias para la tabla
"Sales.SalesPerson".

Gracias.


Preguntas similares