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

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

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • The Communiter-
  • ***
  • Mensajes: 1545
  • -] java Adict [-
    • Comunidad Bitcoin de Oriente
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 »
Miembro y co-fundador original de VampireTeam
Bitcoiner
CopyMaster en Finandy.com como: WillockSV

Desconectado *MAURO*

  • Sv Member
  • ***
  • 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 ®
  • The Communiter-
  • ***
  • Mensajes: 1619
  • 다르켈라
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 ®
  • The Communiter-
  • ***
  • Mensajes: 1545
  • -] java Adict [-
    • Comunidad Bitcoin de Oriente
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
Miembro y co-fundador original de VampireTeam
Bitcoiner
CopyMaster en Finandy.com como: WillockSV

Desconectado *MAURO*

  • Sv Member
  • ***
  • 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 -^-
  • The Communiter-
  • **
  • Mensajes: 2171
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 -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • 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
  • The Communiter-
  • *
  • Mensajes: 6531
  • "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 -^-
  • The Communiter-
  • **
  • Mensajes: 2171
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
  • The Communiter-
  • *
  • Mensajes: 6531
  • "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 ®
  • The Communiter-
  • ***
  • Mensajes: 1545
  • -] java Adict [-
    • Comunidad Bitcoin de Oriente
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:
Miembro y co-fundador original de VampireTeam
Bitcoiner
CopyMaster en Finandy.com como: WillockSV

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • 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 -^-
  • The Communiter-
  • **
  • Mensajes: 2171
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 kikeuntercio

  • Sv Vampire Team ®
  • The Communiter-
  • ***
  • Mensajes: 1545
  • -] java Adict [-
    • Comunidad Bitcoin de Oriente
Re: ayuda borrar en SQL
« Respuesta #13 : 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
Miembro y co-fundador original de VampireTeam
Bitcoiner
CopyMaster en Finandy.com como: WillockSV

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: ayuda borrar en SQL
« Respuesta #14 : mayo 03, 2007, 06:56:59 pm »
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"

si esa modificacion la hiciste en el script que te puso frank, tal cual, no te funciona porque no has puesto la tabla 'participo' en el query principal....

pone como te dijo frank el script que ejecutas pa' estar hablando el mismo idioma
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito