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

#6 Javier Loria
10/12/2003 - 12:00 | Informe spam
Hola:
Efectivamente no hay un concepto de FIRST, los datos en SQL son un
conjunto de datos y las tablas no tienen ni primero ni ultimo. Puede uno
ordenarlos por algun criterio como hizo Ulises pero intrinsicamente no
tienen orden.
Sobre la solucion de Ulises, comentar que en conjuntos de datos grandes
puede ser muy lenta ya que es una subconsulta que se realiza para cada fila,
una alternativa similar que NO necesariamente produce el mismo resultado, es
utilizar funciones de agrupamiento MIN, MAX, etc:
==SELECT A.Codigo, A.Nombre, MAX(B.Direccion)
FROM Operarios AS A JOIN Direccions AS B
ON A.Codigo=B.Codigo
GROUP BY A.Codigo, A.Nombre
==Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Barrish escribio:
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:
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:

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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida