Equivalente FIRST en Sql

10/12/2003 - 09:10 por Barrish | Informe spam
Hola a todos. En access utilizaba la instrucción FIRST para devolver el
primer registro de una consulta LEFT JOIN, pero en Sql Server no he podido
encontrar su equivalente.

¿Podrían decirme cual es?

Muchas gracias y un saludo
Santiago

Preguntas similare

Leer las respuestas

#1 José Raúl Fenollar Martínez
10/12/2003 - 09:27 | Informe spam
SELECT TOP 1 * FROM TABLA1 LEFT JOIN TABLA2

"Barrish" escribió en el mensaje
news:
Mostrar la cita
#2 Barrish
10/12/2003 - 09:53 | Informe spam
Con TOP sólo me devolvería 1 fila de toda la consulta.

Pondré un ejemplo:
Tabla Operarios con los campos Codigo,Nombre
Tabla Direcciones con los campos Codigo,Id,Direccion

La tabla Direcciones está relacionada con los Operarios mediante el campo
codigo.

Suponiendo que hay introducidos estos datos:
Tabla Operarios
=Codigo Nombre
-
101 Operario 1
102 Operario 2

Tabla Direcciones
==Codigo Id Direccion
-
101 1 Dirección 1 del operario
101
101 2 Dirección 2 del operario
101
102 1 Dirección 1 del operario
102


Mediante la instrucción en Access:
SELECT Operarios.Codigo, Operarios.Nombre, First(Direcciones.Direccion) AS
PrimeraDireccion
FROM Operarios
LEFT JOIN Direcciones
ON Operarios.Codigo = Direcciones.Codigo
GROUP BY Operarios.Codigo, Operarios.Nombre;

me devolvía todos los operarios con su primera dirección:
101 Operario1 Dirección 1 del operario 101
102 Operario2 Dirección 1 del operario 102


¿Como puedo crear esta misma instrucción en Sql Server ya que no encuentro
el equivalente a la instrucción FIRST?
Un saludo
Santiago

"José Raúl Fenollar Martínez" escribió en el mensaje
news:#
Mostrar la cita
podido
Mostrar la cita
#3 Barrish
10/12/2003 - 09:59 | Informe spam
Uooppps! .Los datos de la tabla direcciones han salido cortados.
Estos serían los datos:

Tabla Direcciones
==Codigo Id Direccion
-
101 1 Dirección 1 del operario 101
101 2 Dirección 2 del operario 101
102 1 Dirección 1 del operario 102


Saludos
#4 ulises
10/12/2003 - 10:57 | Informe spam
Prueba con

CREATE TABLE OPERARIOS ( codigo int, nombre varchar(30) )
GO
INSERT INTO OPERARIOS VALUES ( 101, 'Operario 101' )
INSERT INTO OPERARIOS VALUES ( 102, 'Operario 102' )
INSERT INTO OPERARIOS VALUES ( 103, 'Operario 103' )
GO
CREATE TABLE DIRECCIONES ( codigo int, id int, direccion varchar(30) )
GO
INSERT INTO DIRECCIONES VALUES ( 101, 1, 'Direccion 1 del Operario
101' )
INSERT INTO DIRECCIONES VALUES ( 101, 2, 'Direccion 2 del Operario
101' )
INSERT INTO DIRECCIONES VALUES ( 102, 1, 'Direccion 1 del Operario
102' )
INSERT INTO DIRECCIONES VALUES ( 102, 2, 'Direccion 2 del Operario
102' )
INSERT INTO DIRECCIONES VALUES ( 102, 3, 'Direccion 3 del Operario
102' )
INSERT INTO DIRECCIONES VALUES ( 103, 1, 'Direccion 1 del Operario
103' )
GO

SELECT a.codigo,
a.nombre,
( SELECT TOP 1 direccion FROM DIRECCIONES WHERE codigo a.codigo ORDER BY id ASC ) as direccion
FROM OPERARIOS a

que da como resultado :

codigo nombre direccion
101 Operario 101 Direccion 1 del Operario 101
102 Operario 102 Direccion 1 del Operario 102
103 Operario 103 Direccion 1 del Operario 103

(3 row(s) affected)

Saludos,
Ulises


On Wed, 10 Dec 2003 09:59:30 +0100, "Barrish"
wrote:

Mostrar la cita
#5 Barrish
10/12/2003 - 11:06 | Informe spam
Fantástico Ulises. Muchas gracias.
Veo entonces que no hay equivalente de FIRST en Sql Server.

Gracias de nuevo y un saludo
Santiago

"ulises" escribió en el mensaje
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida