Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Unas dudas sobre SQL (en general)

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Unas dudas sobre SQL (en general) Responder citando

En la aplicación que estoy arreglando (o destrozando, no sé al final que saldrá Very Happy) estoy pasando todas las instrucciones de base de datos a SQL, por si en un futuro puedo pasarme a Firefox (si logro enterarme como funciona Confused). De momento uso tablas Paradox. Bien; tengo unas dudas:

1. ¿Puedo recuperar una única fila en una consulta?
Me explico mejor:
Código:
SELECT Apellidos, Nombre, Registro FROM 'Persona.db' WHERE Apellidos||' '||Nombre <= 'PÉREZ PÉREZ CARLOS' AND Registro <> 1 ORDER BY A.Apellidos DESC, A.Nombre DESC

Este código funciona bien, pero me devuelve algo así:
    PEREZ PEREZ AURELIO 13396
    PEREZ PEREZ ANGEL 16465
    PEREZ PECES MELCHOR 6564
    PEREZ PARDO-PIMENTEL BEATRIZ 15444
    PEREZ PALMERO MA.CARMEN 15279
    etc.

En una consulta como la del ejemplo me puede devolver 10.000 ó más registros. ¿Hay alguna forma de que sólo me devuelva el primero, que al fin y al cabo es el que me hace falta? Recuperar todos puede llevar demasiado tiempo y frena excesivamente la aplicación.

2. ¿Se pueden usar cursores con tablas Paradox
Es decir: Una instrucción como:
Código:
DECLARE CURSOR Avanza SELECT A.Apellidos, A.Nombre, A.Registro, B.Poblacion FROM 'Persona.db' A, 'Poblacion.db' B WHERE A.Municipio = B.Codigo AND A.Apellidos||' '||A.Nombre <= 'PÉREZ PÉREZ CARLOS' AND A.Registro <> 1 ORDER BY A.Apellidos DESC, A.Nombre DESC

¿Podría utilizarse?
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Re: Unas dudas sobre SQL (en general) Responder citando

Que tal Angel

Angel escribió:
... estoy pasando todas las instrucciones de base de datos a SQL, por si en un futuro puedo pasarme a Firefox (si logro enterarme como funciona Confused).


Me imagino que te has de referir a Firebird y no al navegador Firefox Wink.

Bien, conozco una instrucción que resuelve lo que necesitas para el caso de tu primera duda, solo que es para Firebird, desgraciadamente nunca trabaje con tablas paradox.

Eje.

Código:
SELECT FIRST 1 Apellidos, Nombre, Registro FROM 'Persona.db' WHERE Apellidos||' '||Nombre <= 'PÉREZ PÉREZ CARLOS' AND Registro <> 1 ORDER BY A.Apellidos DESC, A.Nombre DESC


Como puedes observar he agregado la instricción FIRST 1, que significa que seleccione el pimer registro. Si quisieras los primeros cinco seria FIRST 5 y asi dependiendo de tus necesidades.

En el caso de tu segunda duda, si se trata de tablas paradox, no me imagino como ni donde utilizar los cursores o de que manera implementarlos ya que se trata de tablas planas.

Saludos!
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Había encontrado un similar (SELECT TOP) que al probarla no funcionaba. Probaré la que me dices. Gracias.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

checa tambien hay la opcion SELECT LIMIT
_________________
Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc

http://www.touchsoftwares.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Va a ser que no, al menos con tablas Paradox. En la ayuda sobre SELECT lo que dice que admite es:
Código:
SELECT [DISTINCT] column_list
FROM table_reference
[WHERE search_condition]
[ORDER BY order_list]
[GROUP BY group_list]
[HAVING having_condition]
[UNION select_expr]

Así que ¡Ajo y agua! tendré que quebrarme la cabeza o intentar entender de una vez como funciona Firebird, que por más que lo intento no me entra en la cabeza.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.