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.

Preguntas similare

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.


Respuesta Responder a este mensaje
#2 daniel
02/02/2008 - 23:47 | Informe spam
Gracias Alejandro pero no entiendo eso de "inner join" a que te refieres
con:

from
dbo.Orders as oh
inner join
dbo.Customers as c
on oh.CustomerID = c.CustomerID


"Alejandro Mesa" escribió en el
mensaje de noticias
news:
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.


Respuesta Responder a este mensaje
#3 Alejandro Mesa
03/02/2008 - 04:08 | Informe spam
daniel,

Gracias Alejandro pero no entiendo eso de "inner join" a que te refieres
con:

from
dbo.Orders as oh
inner join
dbo.Customers as c
on oh.CustomerID = c.CustomerID



Es la operacion de union de ambas tablas por las columnas que definen su
relacion.

La tabla de ordenes hace referencia a la tabla de clientes atraves de la
columna CustomerID, por lo que si deseamos traer mas informacion sobre el
cliente de una orden, habra que unir ambas tablas.


AMB

"daniel" wrote:

Gracias Alejandro pero no entiendo eso de "inner join" a que te refieres
con:

from
dbo.Orders as oh
inner join
dbo.Customers as c
on oh.CustomerID = c.CustomerID


"Alejandro Mesa" escribió en el
mensaje de noticias
news:
> 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.
>>
>>


Respuesta Responder a este mensaje
#4 daniel
03/02/2008 - 22:34 | Informe spam
Ok, gracias Alejandro ya entendí.

"Alejandro Mesa" escribió en el
mensaje de noticias
news:
daniel,

Gracias Alejandro pero no entiendo eso de "inner join" a que te refieres
con:

from
dbo.Orders as oh
inner join
dbo.Customers as c
on oh.CustomerID = c.CustomerID



Es la operacion de union de ambas tablas por las columnas que definen su
relacion.

La tabla de ordenes hace referencia a la tabla de clientes atraves de la
columna CustomerID, por lo que si deseamos traer mas informacion sobre el
cliente de una orden, habra que unir ambas tablas.


AMB

"daniel" wrote:

Gracias Alejandro pero no entiendo eso de "inner join" a que te refieres
con:

from
dbo.Orders as oh
inner join
dbo.Customers as c
on oh.CustomerID = c.CustomerID


"Alejandro Mesa" escribió en el
mensaje de noticias
news:
> 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.
>>
>>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida