![]() |
| |||
| 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. |
| | ||||
| ||||
| |
| |||
| 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. -- SQL Server 2005 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 -- Esto fallara 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. > > |
| |||
| 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" <AlejandroMesa***discussions.microsoft.com> escribió en el mensaje de noticias news:5379D07C-4723-4088-AFC4-667B978C1F03***microsoft.com... > 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. > > -- SQL Server 2005 > 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 > > -- Esto fallara > 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. >> >> |
| |||
| 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" <AlejandroMesa***discussions.microsoft.com> escribió en el > mensaje de noticias > news:5379D07C-4723-4088-AFC4-667B978C1F03***microsoft.com... > > 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. > > > > -- SQL Server 2005 > > 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 > > > > -- Esto fallara > > 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. > >> > >> > > |
| |||
| Ok, gracias Alejandro ya entendÃ***. "Alejandro Mesa" <AlejandroMesa***discussions.microsoft.com> escribió en el mensaje de noticias news:7A8B5C4C-0B0A-42CE-9550-8E795806AC66***microsoft.com... > 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" <AlejandroMesa***discussions.microsoft.com> escribió en el >> mensaje de noticias >> news:5379D07C-4723-4088-AFC4-667B978C1F03***microsoft.com... >> > 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. >> > >> > -- SQL Server 2005 >> > 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 >> > >> > -- Esto fallara >> > 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. >> >> >> >> >> >> |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Clausula IN | Manolo Zepeda | Newsgroup microsoft.public.es.dotnet.vb | 12 | 28-08-2008 21:00:01 |
| Cómo almacenar una Cláusula WHERE en una variable | Faiverlgr | Newsgroup microsoft.public.es.vfoxpro | 6 | 24-04-2008 00:16:02 |
| restriccion en clausula IN ?? | DarthSidious | Newsgroup microsoft.public.es.sqlserver | 2 | 05-03-2008 13:12:01 |
| clausula group by | Mayo | Newsgroup microsoft.public.es.vfoxpro.datos | 6 | 12-04-2006 15:09:39 |
| XML y XSLT: cargar select en función de otro select | Chino | Newsgroup microsoft.public.es.xml | 0 | 20-12-2004 13:48:21 |