Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

ayuda con sentencia DELETE

Estas en el tema de ayuda con sentencia DELETE en el foro de Mysql en Foros del Web. Buenas a todos, tengo una duda para ejecutar un DELETE multitabla Tengo las siguientes tablas: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE TABLE EGRESADO ( ...
  #1 (permalink)  
Antiguo 02/07/2010, 16:43
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años, 7 meses
Puntos: 27
De acuerdo ayuda con sentencia DELETE

Buenas a todos, tengo una duda para ejecutar un DELETE multitabla

Tengo las siguientes tablas:


Código SQL:
Ver original
  1. CREATE TABLE EGRESADO
  2. (
  3.    NUM_CED_EGR          CHAR(10) NOT NULL,
  4.     NOM_EGR              CHAR(25),
  5.    APE_EGR              CHAR(25),
  6.      EMA_EGR              VARCHAR(70),
  7.    PRIMARY KEY (NUM_CED_EGR)
  8. );

Tengo una tabla llamada niveles_educativos

Código SQL:
Ver original
  1. CREATE TABLE NIVELES_EDUCATIVOS
  2. (
  3.    COD_NIV_EDU          CHAR(5) NOT NULL,
  4.    NIV_EDU              CHAR(40),
  5.    PRIMARY KEY (COD_NIV_EDU)
  6. );

Y de estas dos tablas genero una tabla hija denominada niveles_educativo_egresados

Código SQL:
Ver original
  1. CREATE TABLE NIVELES_EDUCATIVOS_EGRESADO
  2. (
  3.    COD_NIV_EDU          CHAR(5) NOT NULL,
  4.    NUM_CED_EGR          CHAR(10) NOT NULL,
  5.    PRIMARY KEY (COD_NIV_EDU, NUM_CED_EGR)
  6. );

En la tabla niveles_educativos tengo un nivel llamado Tecnologos con Codigo=002

Lo que deseo es eliminar todos los egresados que tenga el nivel educativo de Tecnologo

Tengo que relacionar las tablas??

Como quedaria este DELETE??

Lo habia hecho asi pero me surge error de sintaxis:

Código MySQL:
Ver original
  1.  FROM niveles_educativo_egresado neg, niveles_educativos ne
  2. WHERE ne.COD_NIV_EDU=neg.COD_NIV_EDU and neg.COD_NIV_EDU=002;

Agradezco que me colaboren con esta sintaxis...
  #2 (permalink)  
Antiguo 03/07/2010, 18:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: ayuda con sentencia DELETE

Algo así:
Código MySQL:
Ver original
  1. DELETE FROM niveles_educativo_egresado N INNER JOIN egresado E
  2. ON N.NUM_CED_EGR  = E.NUM_CED_EGR
  3. WHERE N.COD_NIV_EDU=002;

Este es un caso de manual, por lo que te recomiendo leer el uso de DELETE en el manual de referencia: 13.2.1. Sintaxis de DELETE
En este manual encontrarás:
Cita:
Para la primera sintaxis, sólo los registros coincidentes de las tablas listadas antes de la cláusula FROM se borran. Para la segunda sintaxis, sólo los registros coincidentes de las tablas listadas en la cláusula FROM (antes de la cláusula USING ) se borran. El efecto es que puede borrar registros para varias tablas al mismo tiempo y tienen tablas adicionales que se usan para buscar:

Código MySQL:
Ver original
  1. DELETE t1, t2 FROM t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;

O:

Código MySQL:
Ver original
  1. DELETE FROM t1, t2 USING t1, t2, t3 WHERE t1.id=t2.id AND t2.id=t3.id;

Estos comandos usan las tres tablas al buscar registros a borrar, pero borrar los registros coincidentes sólo para las tablas t1 y t2.
En cuanto al uso de JOIN, debes leer esa parte del manual para comprenderla, pero en principio funciona igual que con el SELECT, pero con las condiciones antedichas de FROM.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: delete, sentencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:57.