 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 10 Ene, 2007 11:43 am Asunto: Unas dudas sobre SQL (en general) |
|
|
En la aplicación que estoy arreglando (o destrozando, no sé al final que saldrá ) 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 ). 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 |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Mie 10 Ene, 2007 4:15 pm Asunto: Re: Unas dudas sobre SQL (en general) |
|
|
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 ). |
Me imagino que te has de referir a Firebird y no al navegador Firefox .
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Mie 17 Ene, 2007 2:27 am Asunto: |
|
|
checa tambien hay la opcion SELECT LIMIT _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 17 Ene, 2007 2:36 pm Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|