Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Obtener primer elemento de una consulta

Estas en el tema de Obtener primer elemento de una consulta en el foro de SQL Server en Foros del Web. Hola. tengo lo siguiente. Hago un Select para que me devuelva por ejemplo los coches de un determinado cilindrada: (SELECT Coches from Tabla.......) pero quiero ...
  #1 (permalink)  
Antiguo 14/12/2010, 07:40
 
Fecha de Ingreso: diciembre-2010
Mensajes: 27
Antigüedad: 13 años, 5 meses
Puntos: 0
Obtener primer elemento de una consulta

Hola. tengo lo siguiente. Hago un Select para que me devuelva por ejemplo los coches de un determinado cilindrada:
(SELECT Coches from Tabla.......)
pero quiero quedarme de ese resultado con el primero si me devuelve mas de uno o si me devuelve 1, pues con ese, pero si pongo SELECT TOP 1 Coches......
lo que veo es que el TOP 1 lo coge de la tabla inicial, y claro si mi resultado del Select me devuelve un coche que en la tabla inicial esta en la posicion 3, con TOP 1 no sale y me sale NULL y tendria que poner TOP 3. ¿Comolo hago entonces?No se si me he explicado
  #2 (permalink)  
Antiguo 14/12/2010, 09:22
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Obtener primer elemento de una consulta

Buenos días amlegazpe, no entendí muy bien cuál es el problema que tienes con tu consulta, a ver si explicando cómo funciona la función TOP te queda un poco más claro. La función TOP regresa LOS PRIMEROS N REGISTROS que devuelva tu consulta, veamos si con un ejemplo se entiende

Código SQL:
Ver original
  1. --declaramos una tabla de ejemplo
  2. DECLARE @Tabla TABLE (id INT, descripcion VARCHAR(10))
  3. --insertamos registros de ejemplo
  4. INSERT INTO @Tabla VALUES (1, 'uno')
  5. INSERT INTO @Tabla VALUES (2, 'dos')
  6. INSERT INTO @Tabla VALUES (3, 'tres')
  7. INSERT INTO @Tabla VALUES (4, 'cuatro')
  8. INSERT INTO @Tabla VALUES (5, 'cinco')

Ahora bien, si hacemos una consulta como esta

Código SQL:
Ver original
  1. SELECT * FROM @Tabla WHERE id >= 3

El resultado sería

Código:
id|descripcion
------------------
3|tres
4|cuatro
5|cinco
hasta aquí creo que no hay problema, si ahora hacemos algo como esto

Código SQL:
Ver original
  1. SELECT top 1 * FROM @Tabla WHERE id >= 3

Lo primero que se ejecuta es la consulta de manera normal y sobre el resultado entonces MUESTRA SÓLO EL PRIMER REGISTRO de tal manera que la consulta mostraría lo siguiente:

Código:
id|descripcion
------------------
3|tres
Si continuas con problemas para aplicar la función top te pido que muestres algunos datos de tus tablas y nos expliques qué es lo que quieres de salida, para ver en qué podemos ayudarte.

Saludos
Leo
  #3 (permalink)  
Antiguo 14/12/2010, 10:00
 
Fecha de Ingreso: diciembre-2010
Mensajes: 27
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Obtener primer elemento de una consulta

muchas gracias por laaclaracion, pero asi creia que era pero no, es decir,
como tu dices, en tu ejemplo,con el select saca
3
4
5

y si haces un select top 1 * from. deberia sacar 3 pero no porque el 3 está en la posicion 3 seria top 3

yo tengo una cosa asi:

SET @VAR=(SELECT TOP 1 atributo1 FROM Tabla1 WHERE Atributo2 = @variable EXCEPT SELECT atributo FROM Tabla2);

Con este SELECT , por ejemplo me devuelve

111
222
333

Tabla1: (tendria mas atributos)

atributo1

001
111
445
222
345
767
333
434


Tabla2:(tendria mas atributos)

atributo1
....
....
....
  #4 (permalink)  
Antiguo 14/12/2010, 15:35
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Obtener primer elemento de una consulta

A ver amlegazpe, creo que no terminas de entender cómo funciona el operador TOP.

Si tú pones

SELECT TOP 3 * FROM TuTabla

Esto no te regresa el registro que está en la tercer posición (o en tercer lugar si así lo quieres ver), sino que te regresa LOS PRIMEROS 3 REGISTROS DE LA TABLA QUE ESTÁS CONSULTANDO

No entiendo qué es lo que realmente necesitas obtener a partir de tus dos tablas, ya que no pones ningún dato de ejemplo en tu tabla2, además en la primer parte de tu consulta tienes esto:

SELECT TOP 1 atributo1 FROM Tabla1 WHERE Atributo2 = @variable

pero según tus datos de ejemplo el atributo2 corresponde a la Tabla2.

Trata de explicar con palabras qué es lo que necesitas hacer, para tratar de ayudarte.

Saludos
Leo.
  #5 (permalink)  
Antiguo 14/12/2010, 17:30
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Obtener primer elemento de una consulta

Hay que aclarar que el operador TOP muestra n los registros del RESULTADO no de la tabla, ya que puedes tener una subconsulta que incluso este ordenada de alguna forma en particular.

En cuanto al post, lo he leido varias veces y hasta ahora no logro entenderlo.
Tienes que aprender a explicar, con paciencia, da ejemplos.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #6 (permalink)  
Antiguo 14/12/2010, 17:51
 
Fecha de Ingreso: diciembre-2010
Mensajes: 27
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Obtener primer elemento de una consulta

gracias a todos por la respuestas, ya lo he solucionado. Teneis razon, es que estaba aplicando mal el SELECT del cual me tenia que devolver los resultados. Gracias por vuestra paciencia.
  #7 (permalink)  
Antiguo 14/12/2010, 19:02
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Obtener primer elemento de una consulta

Todo, para nada......como diria una frase.....
__________________
MCTS Isaias Islas

Etiquetas: primer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:58.