Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-12-2009
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
eliminar solo un registro

hola necesito eliminar solo un registro en un delete.

ej.

juan 500
luis 900
juan 500
juan 500



digamos un solo juan 500 y quedaria
juan 500
luis 900
juan 500


necesito q haga esto el sql. gracias
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #2  
Antiguo 24-12-2009
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
¿Te refieres a esto?
Código SQL [-]
DELETE FROM tabla WHERE campo='valor';
Es algo muy sencillo, como ves.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 26-12-2009
darwinhdez darwinhdez is offline
Registrado
 
Registrado: dic 2009
Posts: 3
Poder: 0
darwinhdez Va por buen camino
porque eliminar 1 de 3 registros iguales, hay alguna valor diferente para cada uno?
Responder Con Cita
  #4  
Antiguo 26-12-2009
Avatar de yapt
yapt yapt is offline
Miembro
 
Registrado: sep 2006
Ubicación: España
Posts: 258
Poder: 18
yapt Va por buen camino
Casi todas las bases de datos tienen una columna "GENERADA" que puedes utilizar para numerar las filas obtenidas, o bien, funciones "WINDOW" que hacen esta función:

Esto funcionaria en PostgreSQL (versión 8.4 y superior):

Código SQL [-]
DELETE FROM
(
SELECT ROW_NUMBER AS NUMLINEA, A.* FROM TABLA A
WHERE
      NOMBRE = 'JUAN'
  AND NUMERO = 500
ORDER BY ROWNUM
)
WHERE NUMLINEA = 1

Sustituyendo ROW_NUMBER por ROWNUM, funcionaría también en ORACLE (desde la versión 8, si no recuerdo mal).

(*) Cuidado, no está testeado.

Saludos.
Responder Con Cita
  #5  
Antiguo 04-01-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
utilizo firebird 2.0, como seria en ese caso,
osea; el busca todos los repetidos entonces el 1 de ellos es el q elimina.
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #6  
Antiguo 04-01-2010
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Talvez con DISTINC ...

Código SQL [-]
delete from TABLA1
where ID not in ( SELECT DISTINC ID, NOMBRE, NUMERO from TABLA1)

Algún redactor técnico que pueda explicar en español la anterior SQL?

PD.: La anterior consulta no se puede, lo acabo de recordar
Si usaras FB 2.1 podrías hacerlo con tablas anidadas.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #7  
Antiguo 04-01-2010
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Lightbulb Se me ocurre algo....

Cita:
Empezado por Chris Ver Mensaje
Talvez con DISTINC ...

Código SQL [-]
delete from TABLA1
where ID not in ( SELECT DISTINC ID, NOMBRE, NUMERO from TABLA1)

Algún redactor técnico que pueda explicar en español la anterior SQL?

PD.: La anterior consulta no se puede, lo acabo de recordar
Si usaras FB 2.1 podrías hacerlo con tablas anidadas.
Somo ingenieros y estamos para ingeniar....

Si no se puede la consulta, entonces la solución sería concanetar los campos....

Código SQL [-]
delete from TABLA1
where (cast(tabla1.ID as varchar(12)) || tabla1.nombre || cast(tabla1.numero as varchar(12)) <> ( SELECT DISTINC (cast(ID as varchar(12))
 || NOMBRE || cast(NUMERO as varchar(12))) as campos_combinado from TABLA1)

se podra?
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #8  
Antiguo 07-01-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Sin criticar y menospreciar lo que intentas hacer , en lo personal creo que es un error de diseño de tu base de dato, pues creo que siempre deberia haber un campo diferente y unico en cada tupla (fila ó registro) de los registros de tu tabla, pues para eso estan los primary Key, o en tal efecto podrias añadir un campo por el cual se pueda diferenciar entre una u otra tupla.
Es como si en el club Delphi hubiera dos o mas Usuarios de Nick "ingabraham" y yo le dijera por ejemplo a Roman:
"Oye Roman quiero que me elimines al usuario de nick ingabraham.." pero entonces él me va responder:
"¿Pero cual de todos?"
Entonces quedamos en duda o si este o aquel por que no existe ninguna diferencia entre todos.
¿Que hacemos ahora?..pues esto significa que no se tomo en cuenta esa situacion al momento de diseñar la Base de dato.
Es por eso que en club no vas a encontrar dos miembros con el mismo Nick, siempre debe haber algo que haga la diferencia.
Ahora quisas podrias solucionar (Como te dije anteriormente) agregando un campo a tu tabla, que podria ser por ejemplo una fecha que indique la hora de insercion del registro, puede ser tambien un campo numerico secuencial que indique la secuencia o lugar que le toco a ese registro, o simplemente agregar campo primary key.
De esa forma le podras indicar al servidor que registro especificamente debes eliminar, haciendo mas practica y mas veloz tu consulta SQL.
Espero no haberte liado mas...
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 09-01-2010 a las 14:21:37.
Responder Con Cita
  #9  
Antiguo 08-01-2010
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
si, ya lo habia hecho, me toco agregar un campo de mas.
pero existen tablas donde hay estas duplicidades como

n:n
hay q sacar una tercera para evitar redundancias
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #10  
Antiguo 08-01-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por ingabraham Ver Mensaje
si, ya lo habia hecho, me toco agregar un campo de mas.
pero existen tablas donde hay estas duplicidades como

n:n
hay q sacar una tercera para evitar redundancias
Por supuesto que en una Relacion de cardinalidad n:n ó n:m por regla se tiene que crear una tabla intermedia, pero hay que tener en cuenta que la regla dice que dicha tabla tendra como primary key dos columnas, una traida de la primera tabla y la otra de la segunda.En otras palabra roba como llave primaria a cada una de las llaves primaria de la relacion n:n o tambien escrito *:*; de tal manera que cada tupla va ser unica.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 08-01-2010 a las 13:47:44.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Eliminar registro DBCtrlGrid jjaa Varios 1 24-11-2008 17:40:39
Eliminar registro Zakio14 Firebird e Interbase 5 20-03-2008 07:07:07
Eliminar registro de BD desde PHP fide PHP 5 31-01-2008 14:01:44
Eliminar registro de un .mdb con ADO ¥0n1 Conexión con bases de datos 2 07-11-2007 11:29:12
mostrar SOLO cliente de los que tengo un sólo registro Giniromero SQL 15 11-06-2004 12:33:19


La franja horaria es GMT +2. Ahora son las 22:39:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi