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 

un DELETE en sql que no se como hacer

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: un DELETE en sql que no se como hacer Responder citando

HOLA!!!

la situacion es que tengo una tabla en donde tengo los sgtes campos:

FECHA
TIEMPO
ID

los tiempos son 15, 30 o 60 minutos, la ID es cualquier identificacion.

Supongase de que quiero borrar un registro que tenga 15 mins y la ID 1234. La cosa es que varios registros pueden tener los mismos valores, es decir pueden haber 1 o mas registros que tengan TIEMPO 15 min y ID 1234, la cosa es que yo quisiera borrar el mas reciente.

Yo intente hacer un query asi:
Código:
DELETE FROM cuentas WHERE TIEMPO = 15 AND ID = '1234' ORDER BY FECHA

y luego borraba el ultimo registro de esa consulta (TQuery), pero me dice que esa tabla es read-only...

si alguien sabe algo de como hacerlo diganme...

GRACIAS
_________________
__________________________
C++ RULZ FO' EVA'
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

En una orden DELETE no puedes incluir un ORDER BY ni similar. Yo haría algo así:
Código:
DELETE FROM cuentas WHERE TIEMPO = 15 AND ID = '1234' AND FECHA IN (SELECT MAX(FECHA) FROM cuentas)

Así debería borrar el registro más moderno, pero si hay más de uno en que puedan coincidir los tres datos te los borra todos. No sé si en una tabla Firebird, por ejemplo, se podría usar la cláusula FIRST 1.
_________________
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

claro claro... es verdad que no es puede poner un ORDER BY en un DELETE... disculpas!!!... pero la forma en la que yo lo estaba haciendo era que le pongo a un TQuery esto
Código:
SELECT * FROM cuentas WHERE ID='1234' AND TIEMPO=15 ORDER BY FECHA

luego le doy
Código:
Query1->Last();
Query1->Delete();

pero me bota un error diciendo que la tabla es read-only...

no se porque me bota eso
_________________
__________________________
C++ RULZ FO' EVA'
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

listo gracias, ya me funciono.

Lo que hice fue colocarle un consecutivo que fuese unico para cada registro y le puse la sentencia que me dijiste pero en vez de MAX(FECHA) puse MAX(CONSEC).

GRACIAS!!!
_________________
__________________________
C++ RULZ FO' EVA'
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

pablo_emiliob escribió:
pero me bota un error diciendo que la tabla es read-only...

no se porque me bota eso

Porque los querys, aunque a todos los efectos son tablas, realmente no puede operarse dentro de ellos; puedes moverte, subir, bajar, consultar pero no modificar el resultado de un query.
_________________
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

aaahhh ok, entonces era por eso... bueno, igualmente gracias angel, me sirvio de mucha ayuda la sentencia SQL que me pasaste...

GRACIAS!!!
_________________
__________________________
C++ RULZ FO' EVA'
Volver arriba
Ver perfil de usuario Enviar mensaje privado
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.