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

Limitar número de resultados de una consulta

Estas en el tema de Limitar número de resultados de una consulta en el foro de SQL Server en Foros del Web. Hola, Estoy intentando hacer una consulta que una resultados de dos tablas, pero necesito que me ofrezca sólo 10 resultados ordenados por fecha. Seguro que ...
  #1 (permalink)  
Antiguo 23/04/2009, 06:02
 
Fecha de Ingreso: noviembre-2003
Mensajes: 35
Antigüedad: 20 años, 6 meses
Puntos: 0
Limitar número de resultados de una consulta

Hola,
Estoy intentando hacer una consulta que una resultados de dos tablas, pero necesito que me ofrezca sólo 10 resultados ordenados por fecha.
Seguro que hay mucha gente que se ha encontrado en situaciones similares, pero por mucho que he buscado en internet no he sido capaz de encontrar una solución que funcione:
Lo que intento es hacer un select por cada una de las tablas, unidas por un union, y por encima de esto hago un select top 10 y la ordenación por fecha.
Funciona todo salvo select top 10.

Me explico con el código:

(SELECT nombre AS nombre, descripcion AS descripcion, cast(ref_art AS int) AS referencia, fecha AS fecha FROM articulos) UNION (SELECT nombre_art AS nombre, 'notext' AS descripcion, cast(referencia AS int) AS referencia, fecha AS fecha FROM referencias) ORDER BY fecha;

Esto funciona, o para simplificar el código, ésto funcionaría:

(SELECT nombre AS nombre, fecha AS fecha FROM articulos) UNION (SELECT nombre_art AS nombre, fecha AS fecha FROM referencias) ORDER BY fecha;

Pero si hago un select top 10 no me funciona:

SELECT TOP 10 * (SELECT nombre AS nombre, fecha AS fecha FROM articulos) UNION (SELECT nombre_art AS nombre, fecha AS fecha FROM referencias) ORDER BY fecha;

¿Alguien sabe qué estoy haciendo mal?
También he probado con una solución que amablemente me han dado en el foro de base de datos, que sería añadir al final de la sentencia "LIMIT 10", por lo visto esto funciona en MySQL, pero parar SQLServer no funciona.
Si alguien tiene alguna idea de cómo se podría hacer se lo agradecería mucho.

Un saludo.
  #2 (permalink)  
Antiguo 23/04/2009, 07:34
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: Limitar número de resultados de una consulta

Hola:

SELECT TOP 10 * FROM (SELECT nombre AS nombre, fecha AS fecha FROM articulos) UNION (SELECT nombre_art AS nombre, fecha AS fecha FROM referencias) ORDER BY fecha

Saludos
  #3 (permalink)  
Antiguo 24/04/2009, 03:49
 
Fecha de Ingreso: noviembre-2003
Mensajes: 35
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Limitar número de resultados de una consulta

Hola, te agradezco mucho la ayuda pero no me funciona esta solución si lanzo la consulta desde ASP.NET.
He probado a generar la consulta directamente en SQLServer y funciona, pero la pego en ASP.NET haciendo un try y catch, y salta, diciendo que no se puede ejecutar la consulta.

De hecho he simplificado todo lo posible la consulta para tratar de hacerla funcionar.
He hecho:
(SELECT nombre AS nombre FROM articulos) UNION (SELECT nombre_art AS nombre FROM referencias)

Esta opciónn funciona perfecto.
Pero si pongo:
SELECT TOP 10 * FROM(SELECT nombre AS nombre FROM articulos) UNION (SELECT nombre_art AS nombre FROM referencias)

No me funciona.
De verdad que me tiene desesperado el tema.
¿Qué hago mal?

Salud.

Última edición por benito_camelas; 24/04/2009 a las 06:15
  #4 (permalink)  
Antiguo 24/04/2009, 07:55
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 11 meses
Puntos: 220
Respuesta: Limitar número de resultados de una consulta

y si pones la sentencia SQL en un procedimiento almacenado y desde tu ASP Net Ejecutas dicho Procedimiento almacenado ???
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
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 19:52.