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 16-11-2015
Anonymus2009 Anonymus2009 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Anonymus2009 Va por buen camino
Consulta con DELETE

En caso de eliminar registros en una tabla haciendo coincidir dos campos con nombre distinto estaría bien así:

Código SQL [-]
DELETE FROM [db_BASE].[dbo].[Lineas_de_suministros] where numero_de_pedido
IN (SELECT * FROM [db_BASE].[dbo].[Orders_Lineas]  L   where L.n_albaran=numero_de_pedido )
Responder Con Cita
  #2  
Antiguo 16-11-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y?
Responder Con Cita
  #3  
Antiguo 16-11-2015
Anonymus2009 Anonymus2009 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Anonymus2009 Va por buen camino
Si estaría bien así
Responder Con Cita
  #4  
Antiguo 16-11-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tendrás que explicarte mejor
Responder Con Cita
  #5  
Antiguo 16-11-2015
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Cita:
Empezado por Anonymus2009 Ver Mensaje
En caso de eliminar registros en una tabla haciendo coincidir dos campos con nombre distinto estaría bien así:

Código SQL [-]IN (SELECT * FROM [db_BASE].[dbo].[Orders_Lineas] L where L.n_albaran=numero_de_pedido )
No podemos saber si la relación es correcta, ya que nos falta información, pero debes cambiar la segunda linea por

IN (SELECT ID_COMO_SE_LLAME FROM [db_BASE].....
__________________
http://www.gestionportable.com
Responder Con Cita
  #6  
Antiguo 16-11-2015
Anonymus2009 Anonymus2009 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Anonymus2009 Va por buen camino
Vale disculpa, es que a no suelo explicarme bien,
quiero eliminar de la primera tabla todos los registros cuyo campo "n_albaran" coincida con los de la segunda "numero_de_pedido"
Me entiendes mejor ahora.
Gracias
Responder Con Cita
  #7  
Antiguo 16-11-2015
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Con la modificación que te puse antes estaría correcto.
__________________
http://www.gestionportable.com
Responder Con Cita
  #8  
Antiguo 16-11-2015
Anonymus2009 Anonymus2009 is offline
Miembro
NULL
 
Registrado: dic 2012
Posts: 25
Poder: 0
Anonymus2009 Va por buen camino
Para confirmarlo quedaría de esta manera

DELETE FROM [db_BASE].[dbo].[Lineas_de_suministros] where numero_de_pedido
IN (SELECT n_albaran FROM [db_BASE].[dbo].[Orders_Lineas] L where L.n_albaran=numero_de_pedido )

Eliminaría de la primera tablas "Linead_de_suministros" tantos registros como los encontrados en la segunda tabla "Orders_Lineas" coincidiendo los valores de los campos "n_albaran" y "numero_de_pedido"

Si es así tampoco me sirve la solución. Mi problema es el siguiente, importo un un par de tablas maestro-detalle (en mi caso "Orders") y la paso a otra tabla "Suministros", ambas tablas tanto "Orders", como suministros tiene una segunda tabla maestro detalle, Es decir "Orders" tiene "Orders_lineas" y "Suministros" tiene "Lineas_de_suministros".
Mi duda me surge cuando si por cualquier cosa tengo que volver a hacer el traspaso de "Orders" a "Suministros", previamente tengo que eliminar de las tablas "Suministros" todos los registros cuyo campo "numero_de_pedido" coincida con el campo "n_albaran" de la tabla "Orders", pero evidentemente no me puedo fiar del numero de líneas que tenga porque puede haber cambiado.
Es posible que definiendo las tablas como maestro-detalle sólo necesite eliminar el registro de cabecera y automáticamente de eliminarían los renglones.
Agradecería alguna sugerencia.
Gracias por vuestra paciencia.
Responder Con Cita
  #9  
Antiguo 17-11-2015
Avatar de pacopenin
pacopenin pacopenin is offline
Miembro
 
Registrado: sep 2010
Ubicación: Asturias
Posts: 382
Poder: 14
pacopenin Va por buen camino
Bastaría que definieran claves externas (FOREIGN KEY) de las tablas de líneas hacia sus correspondientes cabeceras, así como definir la acción a realizar cuando se borra un registro ( CASCADE o NULL) de la tabala cabecera (orders o suministros), Creo que estás usando SQL Server. Echa un ojo a ésto : https://msdn.microsoft.com/es-es/lib...ql.120%29.aspx
__________________
http://www.gestionportable.com
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
Delete con ADO Jucem MS SQL Server 1 09-04-2005 03:26:10
SQL delete scooterjgm SQL 3 24-09-2004 11:05:30
Delete from una consulta?? Tama SQL 2 26-04-2004 17:25:45
Consulta SQL, Delete mrmanuel SQL 5 30-03-2004 09:10:17
Error en consulta SQL (delete FROM ...) orfeo SQL 7 16-05-2003 03:41:34


La franja horaria es GMT +2. Ahora son las 18:02:18.


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