Hola foro, un gusto regresar a colaborar (y que me colaboren).
Bueno, estoy trabajando con firebird 1.5.2 y me lleve tamaña sorpresa al tratar de hacer un subquery para poder responder la pregunta de este hilo.
El codigo seria:
Código SQL
[-]
select first 10 *
from factura
order by numero_factura
Supongo que el identificador de la tabla es numero_factura, pero es posible que la numeracion de la facturacion no este en orden cronologico, y ese caso lo tengo con un cliente donde la factura 0001 es hecha el 10/10/2006 y la factura 0002 es hecha el 09/09/2006.
En vista de esa situacion me puse a hacer subconsultas y los resultados no fueron congruentes, pues lo que me mostro fue una lista con 5 registros pero de personas que empezaban los nombre por la letra A. Este es el codigo:
Código SQL
[-]
select first 5 *
from predio
where id in (select first 5 id
from predio
order by id
)
order by nombre
Entonces sugeriria utilizar un procedimiento almacenado de la forma que presento a continuacion, es un ejemplo de una de mis bases de datos.
Código SQL
[-]
SET TERM ^ ;
CREATE PROCEDURE SP_PRUEBA (
cantidad integer)
returns (
id_predio varchar(15))
as
begin
for execute statement 'select first ' || (cast (cantidad as varchar(10))) || ' id ' ||
'from predio ' ||
'order by id '
into :id_predio
do begin
suspend;
end
end^
SET TERM ; ^
y luego puedes hacer la consulta
Código SQL
[-]
select *
from predio a
inner join sp_prueba (3) b on (a.id = b.id_predio)
order by nombre
Como enredadito no ?
Espero que sea de utilidad o de ampliacion porque a mi la subconuslta no me funciono.