Autor Tema: ayuda borrar en SQL (Resuelto)  (Leído 12829 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • Trade Count: (2)
  • The Communiter-
  • ***
  • Thank You
  • -Given: 7
  • -Receive: 6
  • Mensajes: 1551
  • -] java Adict [-
    • Escuela Latinoamericana ELA
ayuda borrar en SQL (Resuelto)
« : mayo 03, 2007, 01:10:45 am »
tengo una tarea a la cual no le capto mucho ya que nose mucho de base de datos relacionales
bueno lo que me piden es lo siguientedice asi:
C.- Borrar el Mazda de "Martin Gomez"

Los datos de la base es la siguiente:
Conductor(numero_carnet,nombre,direccion)
Coche(matricula,modelo,año)
Accidente(numero_parte,fecha,lugar)
posee(numero_carnet,matricula)
Participo(numero_carnet,coche,numero_parte,importe_daños)

espero me ayuden con esto ya que como digo en esto de SQL no mucho
« Última Modificación: mayo 03, 2007, 07:31:50 pm por kikeuntercio »

Desconectado *MAURO*

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 2
  • -Receive: 1
  • Mensajes: 455
  • El Futbol: la unica religión ke no tiene Ateos ッ
Re: ayuda borrar en SQL
« Respuesta #1 : mayo 03, 2007, 02:16:47 am »
q es MS SQL Server ???  MySQL ??? u otro ???

mas o menos te capto proba algo asi como lo siguiente

Citar
DELETE FROM nombredetabla  WHERE conductor='Martin Gomez' AND modelo='mazda'

Desconectado darkela

  • Sv Vampire Team ®
  • Trade Count: (2)
  • The Communiter-
  • ***
  • Thank You
  • -Given: 3
  • -Receive: 0
  • Mensajes: 1634
  • 다르켈라
Re: ayuda borrar en SQL
« Respuesta #2 : mayo 03, 2007, 02:24:45 am »
cabal asi como dice mauro es..

DELETE FROM tabla_name WHERE conductor='Martin Gomez'

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • Trade Count: (2)
  • The Communiter-
  • ***
  • Thank You
  • -Given: 7
  • -Receive: 6
  • Mensajes: 1551
  • -] java Adict [-
    • Escuela Latinoamericana ELA
Re: ayuda borrar en SQL
« Respuesta #3 : mayo 03, 2007, 06:15:04 am »
cabal asi como dice mauro es..

DELETE FROM tabla_name WHERE conductor='Martin Gomez'

pero eso solo me elimiaria el dato de una sola tabla, en este caso el de la tabla conductor.


q es MS SQL Server ???  MySQL ??? u otro ???

mas o menos te capto proba algo asi como lo siguiente
Citar
DELETE FROM nombredetabla  WHERE conductor='Martin Gomez' AND modelo='mazda'
es en SQL Server
y tu respuesta no podria ser ya que no existe una tabla que contenga "conductor" y "modelo"(aunque en mi caso creo que seria "coche" en la tabla "participo") al mismo tiempo

lo que yo creo es que tendria que hacer un eliminar pero en base a DOS consultas previas pero eso es exactamente lo que no puedo hacer :-/ o nose si me equivoco

Desconectado *MAURO*

  • Trade Count: (0)
  • Sv Member
  • ***
  • Thank You
  • -Given: 2
  • -Receive: 1
  • Mensajes: 455
  • El Futbol: la unica religión ke no tiene Ateos ッ
Re: ayuda borrar en SQL
« Respuesta #4 : mayo 03, 2007, 06:49:55 am »
Sacos!!!

Pense q conductor porq decia "...el carro de Martin Gomez"  (osea el nombre de la persona) XD

Es q no te especificaste bien viejo

Bueno pero por hay va la idea :coffee: me voy a descansar un poco :lazy:

estoy frikiado ahorita  :shock:

Desconectado °o.O[ F®ªnk ]O.o°

  • -^- Elite Gold -^-
  • Trade Count: (4)
  • The Communiter-
  • **
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 2172
Re: ayuda borrar en SQL
« Respuesta #5 : mayo 03, 2007, 08:01:15 am »
Seria algo así:

Citar
DELETE FROM coche
WHERE coche.matricula IN (SELECT posee.matricula FROM posee INNER JOIN conductor ON posee.numero_carnet = conductor.numero_carnet WHERE conductor.nombre='Martin Gomez') AND coche.modelo = 'Mazda'

NO FUMEN!!!, es por su bien
LORD KARLITOZ, TE EXTRAÑAREMOS

Desconectado tekun

  • -^- Elite Silver -^-
  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 53
  • -Receive: 101
  • Mensajes: 3193
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: ayuda borrar en SQL
« Respuesta #6 : mayo 03, 2007, 08:53:03 am »
yo la verda' no entiendo muy bien tu pregunta, y no la entiendo porque las soluciones que te han dado te deberian de funcionar....

con lo de bases relacionales, me imagino que tu problema es que la informacion esta amarrada en todas las tablas, por lo que debes de eliminar primero la informacion en la tabla hija y luego para arriba.

viendo las tablas que has puesto

Conductor(numero_carnet,nombre,direccion)
Coche(matricula,modelo,año)
Accidente(numero_parte,fecha,lugar)
posee(numero_carnet,matricula)
Participo(numero_carnet,coche,numero_parte,importe_daños)

dejando de lado que la base de datos esta algo pateadita(se que es por tratarse de un deber, pero tenia que decirlo), debes de averiguarte como estan creadas las relaciones entre las tablas, y asi detectaras quien es primary key table y quien es foreign pa empezar a eliminar las tablas que son foreign.... esto en el enterprise manager




sino pues, haciendo uso de las ayuditas que da sql2000 empeza a eliminar la info en cualquier tabla, sql te dira que

Citar
DELETE statement conflicted with TABLE REFERENCE constraint 'constraint1'. The conflict occurred in database 'Conductores_Chocos', table 'conductor'.
The statement has been terminated.

lo anterior como resultado del script

Citar
delete from conductor where nombre ='Martin Gomez'

claro!!!, se que esto ultimo es un metodo a prueba y error .......pero ¿?¿?¿?
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado rdoggsv

  • Administrator
  • Trade Count: (3)
  • The Communiter-
  • *
  • Thank You
  • -Given: 301
  • -Receive: 488
  • Mensajes: 6402
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: ayuda borrar en SQL
« Respuesta #7 : mayo 03, 2007, 12:58:35 pm »
Hey frank pero con ese delete borrarias el mazda de el listado de coches pero siempre quedaria como que si el chero posee el carro o no ??, lo borra automaticamente de las 2 ?

Desconectado °o.O[ F®ªnk ]O.o°

  • -^- Elite Gold -^-
  • Trade Count: (4)
  • The Communiter-
  • **
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 2172
Re: ayuda borrar en SQL
« Respuesta #8 : mayo 03, 2007, 01:13:55 pm »
Hey frank pero con ese delete borrarias el mazda de el listado de coches pero siempre quedaria como que si el chero posee el carro o no ??, lo borra automaticamente de las 2 ?

Depende de como se hagan las relaciones, si se define como un "on delete cascade" (borrado en cascada) de un sólo se va también la tupla de la pertenencia.

En este caso si no se define así, no te lo borrará :D porque te dará un warning de integridad referencial.

Yo sólo hice la sentencia que pedía el amigo kike, asumiendo que sí hay un borrado en cascada.

NO FUMEN!!!, es por su bien
LORD KARLITOZ, TE EXTRAÑAREMOS

Desconectado rdoggsv

  • Administrator
  • Trade Count: (3)
  • The Communiter-
  • *
  • Thank You
  • -Given: 301
  • -Receive: 488
  • Mensajes: 6402
  • "Once you go arch , u never go back"
    • SV CommunitY
Re: ayuda borrar en SQL
« Respuesta #9 : mayo 03, 2007, 01:20:28 pm »
Depende de como se hagan las relaciones, si se define como un "on delete cascade" (borrado en cascada) de un sólo se va también la tupla de la pertenencia.

En este caso si no se define así, no te lo borrará :D porque te dará un warning de integridad referencial.

Yo sólo hice la sentencia que pedía el amigo kike, asumiendo que sí hay un borrado en cascada.

Si me imagine que habias tomado en cuenta lo de borrado en cascada, supongo que si queres borrar los 2 manualmente lo haces con un subquery

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • Trade Count: (2)
  • The Communiter-
  • ***
  • Thank You
  • -Given: 7
  • -Receive: 6
  • Mensajes: 1551
  • -] java Adict [-
    • Escuela Latinoamericana ELA
Re: ayuda borrar en SQL
« Respuesta #10 : mayo 03, 2007, 01:54:02 pm »
hey frank mira estaba intentando modificando el codigo que vos distes per aun asi no le allo mucho :-/
quiero solo dejar algo en claro para ver si asi me ayudan mejor.
en la ultima parte del codigo de frank el pone esto:
"AND coche.modelo = 'Mazda'" pero no creo que seria asi, ya que en coche.modelo nosotros hemos puesto por ejemplo "3" y en participo.coche hemos puesto "Mazda" osea que en otras palabras seria:
Marca = participo.coche
Modelo = coche.modelo

bueno aclaro que desde un principio no le encontre mucho sentido a esta base de datos asi como dice tekun y eso que escribi es lo que exactamente pide el ejercicio, ahora el borrado en cascada si esta activado, pero por el momento he probado modificando el codigo que proporciono frank pero no me borra nada :cry:

Desconectado tekun

  • -^- Elite Silver -^-
  • Trade Count: (1)
  • The Communiter-
  • *
  • Thank You
  • -Given: 53
  • -Receive: 101
  • Mensajes: 3193
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: ayuda borrar en SQL
« Respuesta #11 : mayo 03, 2007, 02:04:13 pm »
y eliminando en tabla por tabla no te funciona....
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado °o.O[ F®ªnk ]O.o°

  • -^- Elite Gold -^-
  • Trade Count: (4)
  • The Communiter-
  • **
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 2172
Re: ayuda borrar en SQL
« Respuesta #12 : mayo 03, 2007, 02:07:26 pm »
hey frank mira estaba intentando modificando el codigo que vos distes per aun asi no le allo mucho :-/
quiero solo dejar algo en claro para ver si asi me ayudan mejor.
en la ultima parte del codigo de frank el pone esto:
"AND coche.modelo = 'Mazda'" pero no creo que seria asi, ya que en coche.modelo nosotros hemos puesto por ejemplo "3" y en participo.coche hemos puesto "Mazda" osea que en otras palabras seria:
Marca = participo.coche
Modelo = coche.modelo

bueno aclaro que desde un principio no le encontre mucho sentido a esta base de datos asi como dice tekun y eso que escribi es lo que exactamente pide el ejercicio, ahora el borrado en cascada si esta activado, pero por el momento he probado modificando el codigo que proporciono frank pero no me borra nada :cry:

Yo siento que te has complicado, hasta donde yo veo la sentencia que yo te puse estaría buena.

Según entiendo la tabla "participo" es cuando el coche ha chocado, pero ahí sólo te dicen que borrés el mazda de Martín Gomez, nada más.

Por qué no ponés la sentencia tal y como la has probado para ver si hay algún error ahí?

NO FUMEN!!!, es por su bien
LORD KARLITOZ, TE EXTRAÑAREMOS

Desconectado ~

  • Trade Count: (0)
  • The Communiter-
  • *
  • Thank You
  • -Given: 0
  • -Receive: 156
  • Mensajes: 1412
    • Ciencia de Computación, OSes y Herramientas
Re: ayuda borrar en SQL
« Respuesta #13 : mayo 03, 2007, 03:27:00 pm »
Tal vez con un procedimiento que haga algo así:

Código: [Seleccionar]
1- Buscar en Conductor el numero de carnet de "Martin Gomez".
//paso 1:
  SELECT numero_carnet
  INTO   mi_tabla_tmp_carnet
  FROM   Conductor
  WHERE  nombre="Martin Gomez"


2- Buscar en posee todas las matriculas que correspondan al carnet de "Martin Gomez"
   del resultado anterior (en el que buscamos y obtuvimos el carnet de Martin Gomez).
//paso 2:
   SELECT matricula
   INTO   mi_tabla_tmp_matricula
   FROM   posee
   WHERE  mi_tabla_tmp_carnet.numero_carnet = posee.numero_carnet


3- Buscar en Coche todos los 'modelo' s; donde la matricula corresponda a la de "Martin Gomez"
   del paso anterior (en donde obtuvimos matriculas de Martin Gomez), y que el modelo sea Mazda.
//paso 3:
   SELECT Modelo
   INTO   mi_tabla_tmp_modelo_carro
   FROM   Coche
   WHERE  Coche.modelo = "Mazda"
   AND    mi_tabla_tmp_matricula.matricula = Coche.matricula


4- Buscar en Participo todos los registros de 'numero_parte' donde el numero de carnet
   sea el de "Martin Gomez".
//paso 4:
   SELECT numero_parte
   INTO   mi_tabla_tmp_numero_parte
   FROM   Participo
   WHERE  mi_tabla_tmp_carnet.numero_carnet = Participo.numero_carnet


5- Eliminar de la tabla Accidente todos los registros donde aparece el 'numero_parte' del
   resultado anterior (en el que buscamos todos los numeros de parte correspondientes al
   carnet de Martin Gomez).
//paso 5:
   DELETE FROM Accidente
   WHERE  mi_tabla_tmp_numero_parte.numero_parte = Participo.numero_parte


6- Eliminar de la tabla Participo todos los registros de 'numero_parte' donde el numero de
   carnet sea el de "Martin Gomez".
//paso 6:
   DELETE FROM Participo
   WHERE  mi_tabla_tmp_carnet.numero_carnet = Participo.numero_carnet


7- Eliminar de posee todos los registros donde el modelo sea "Mazda" y la matricula sea
   la de "Martin Gomez".
//paso 7:
   DELETE FROM posee
   WHERE  mi_tabla_tmp_matricula.matricula = posee.matricula


8- Eliminar de Coche todos los registros donde el 'modelo' sea "Mazda" y la matrícula sea
   la de "Martin Gomez".
//paso 8:
   DELETE FROM Coche
   WHERE  Coche.modelo    = "Mazda"
   AND    Coche.matricula = mi_tabla_tmp_matricula.matricula


Y asumiendo que el campo "coche" en participo en realidad es la matrícula:

Código: [Seleccionar]
1- Buscar en Conductor el numero de carnet de "Martin Gomez".
//paso 1:
  SELECT numero_carnet
  INTO   mi_tabla_tmp_carnet
  FROM   Conductor
  WHERE  nombre="Martin Gomez"


2- Buscar en posee todas las matriculas que correspondan al carnet de "Martin Gomez"
   del resultado anterior (en el que buscamos y obtuvimos el carnet de Martin Gomez).
//paso 2:
   SELECT matricula
   INTO   mi_tabla_tmp_matricula
   FROM   posee
   WHERE  mi_tabla_tmp_carnet.numero_carnet = posee.numero_carnet


3- Buscar en Coche todos los 'modelo' s; donde la matricula corresponda a la de "Martin Gomez"
   del paso anterior (en donde obtuvimos matriculas de Martin Gomez), y que el modelo sea Mazda.
//paso 3:
   SELECT Modelo
   INTO   mi_tabla_tmp_modelo_carro
   FROM   Coche
   WHERE  Coche.modelo = "Mazda"
   AND    mi_tabla_tmp_matricula.matricula = Coche.matricula


4- Buscar en Participo todos los registros de 'numero_parte' donde el numero de carnet
   sea el de "Martin Gomez".
//paso 4:
   SELECT numero_parte
   INTO   mi_tabla_tmp_numero_parte
   FROM   Participo
   WHERE  mi_tabla_tmp_carnet.numero_carnet = Participo.numero_carnet
   AND    Participo.coche = mi_tabla_tmp_matricula.matricula


5- Eliminar de la tabla Accidente todos los registros donde aparece el 'numero_parte' del
   resultado anterior (en el que buscamos todos los numeros de parte correspondientes al
   carnet de Martin Gomez).
//paso 5:
   DELETE FROM Accidente
   WHERE  mi_tabla_tmp_numero_parte.numero_parte = Participo.numero_parte


6- Eliminar de la tabla Participo todos los registros de 'numero_parte' donde el numero de
   carnet sea el de "Martin Gomez".
//paso 6:
   DELETE FROM Participo
   WHERE  mi_tabla_tmp_carnet.numero_carnet = Participo.numero_carnet
   AND    Participo.coche = mi_tabla_tmp_matricula.matricula


7- Eliminar de posee todos los registros donde el modelo sea "Mazda" y la matricula sea
   la de "Martin Gomez".
//paso 7:
   DELETE FROM posee
   WHERE  mi_tabla_tmp_matricula.matricula = posee.matricula


8- Eliminar de Coche todos los registros donde el 'modelo' sea "Mazda" y la matrícula sea
   la de "Martin Gomez".
//paso 8:
   DELETE FROM Coche
   WHERE  Coche.modelo    = "Mazda"
   AND    Coche.matricula = mi_tabla_tmp_matricula.matricula


Los pasos del 5 al 8 pueden necesitar otro orden. Esto solo es una explicación de cómo
podría hacerse. Lo más seguro es que esto no funcione pero por lo menos puede que sirva
para aclarar cómo podría estar estructurada la base de datos exactamente.

También es posible que esta forma de hacer las cosas falle en el paso 8 si Martin Gomez tiene
más de un Mazda.
« Última Modificación: mayo 03, 2007, 05:13:43 pm por ~ »
Mi sitio web:
---- IP para archivo hosts (todos mis subdominios):
190.150.9.244 archefire.org

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • Trade Count: (2)
  • The Communiter-
  • ***
  • Thank You
  • -Given: 7
  • -Receive: 6
  • Mensajes: 1551
  • -] java Adict [-
    • Escuela Latinoamericana ELA
Re: ayuda borrar en SQL
« Respuesta #14 : mayo 03, 2007, 06:27:08 pm »
Frank con el codigo que me distes exactamente no me funciona como te digo en coche.modelo almacenasmos por ejemplo: de un "toyota 1600" alli almacenamos "1600" y en participo.coche almacenamos la marca osea "toyota"

pero poniendo "AND coche.modelo = '3'" asumiendo que el "3" es el modelo del Mazda entonces si me elimina de la tabla coche.
y yo probe modifiando el "AND participo.coche = 'Mazda'" pero me da un error que dice:
"el prefijo de la columna 'participo' no coincide con un nombre de tabla o con un alias usando en la consulta"

ahora con lo que dice ~ no he probado aun primero ire a cenar y luego vere si pruebo el codigo que dejastes.

de antemano les dire que todos aca ya se ganaron su respectivo +K