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

borrar registro dentro de tabla mysql

Estas en el tema de borrar registro dentro de tabla mysql en el foro de Mysql en Foros del Web. Buenos días. Tengo tres tablas creadas en una bbdd mysql. En dos de ellas, "datos empresa" pone una serie de datos sacados de un formulario ...
  #1 (permalink)  
Antiguo 21/07/2014, 03:32
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
borrar registro dentro de tabla mysql

Buenos días. Tengo tres tablas creadas en una bbdd mysql. En dos de ellas, "datos empresa" pone una serie de datos sacados de un formulario y en la otra otros datos diferentes, a excepción de uno de los campos de las tablas anteriores, nombre de la empresa, que también se incluye en la tercera tabla. Lo que pretendo es, que cuando se borre la tabla "datos de empresa", también se borre el nombre de la empresa de la fila correspondiente dentro de la otra tabla. He probado con delete, pero me borra todo el registro, toda la fila, y eso claro, no lo quiero.

TABLA 1 (datos empresa 1):
nombre empresa, contacto, telefono, direccion, email
datos dispositivo 1

TABLA 2 (datos empresa 2):
nombre empresa, contacto, telefono, direccion, email
datos dispositivo 2

TABLA 3 (Dispositivos):
id, MAC, nombre empresa
datos dispositivo 1
datos dispositivo 2

Lo que quiero es, que si borro la tabla 1, me borre dentro de la tabla 3 el nombre de la empresa perteneciente a la empresa del dispositivo 1.

Esta es la consulta que he probado DELETE FROM dispositivos WHERE dispositivos = datos_empresa_1, pero claro, me borra toda la fila...cómo puedo hacer para que sólo me borre el campo que busco borrar??

Muchas gracias, un saludo.
  #2 (permalink)  
Antiguo 21/07/2014, 03:45
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 8 meses
Puntos: 67
Respuesta: borrar registro dentro de tabla mysql

Lo que deverias hacer antes de borrar la tabla 1 es hacerle una consulta, sacar el nombre de empresa y realizar otra consulta para comprobar si existe el nombre de empresa en la tabla 3, entonces eliminarlo, ya después quedaría eliminar la tabla 1.

Saludos.
  #3 (permalink)  
Antiguo 21/07/2014, 04:19
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: borrar registro dentro de tabla mysql

mmm, veamos, voy a poner aquí el código que tengo para aclarar.
Esto que me aconsejas ya lo tenía hecho, lo único que me falta es la consulta correcta para eliminar el nombre de la empresa en la tabla 3 (comprobar si existe el nombre en la tabla 3 no es necesario porque por defecto, cuando meto la información dentro del formulario, me inserta ese campo en la tabla 3):

Código MySQL:
Ver original
  1. SELECT * FROM Dispositivos
  2.  
  3. DELETE FROM Dispositivos where nombre_empresa = $fila[nombre_empresa]
  4.  
  5. DROP TABLE 'datos_empresa_1'

Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las normas del foro, por favor.
La tabla 'datos_empresa_1' me la borra perfectamente, lo que no hace es borrar el registro que comentaba...por lo que creo que lo que me falla es la consulta del delete, que no se cómo elegir el campo que pretendo borrar.

Muchas gracias.

Última edición por gnzsoloyo; 21/07/2014 a las 05:01
  #4 (permalink)  
Antiguo 21/07/2014, 05:10
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: borrar registro dentro de tabla mysql

Cita:
Esta es la consulta que he probado DELETE FROM dispositivos WHERE dispositivos = datos_empresa_1, pero claro, me borra toda la fila...cómo puedo hacer para que sólo me borre el campo que busco borrar??
Eso no es un DELETE. Es un UPDATE.
Por definición, DELETE borra todo un registro, y tu no estás planteando eso, sino "blanquear" el campo dado.

Pero más allá de eso tienes un gravísimo defecto conceptual, ya que lo que describes es una relación N:M entre dos tablas, que está representada por la tercera tabla.
En ese contexto, borrar un dato que administra la relación forzosamente debería borrar el registro entero.
Tengo la fuerte impresión que el problema comienza porque tienes el esquema de datos mal diseñado, y corrigiendolo resolverías más de un problema.

Por lo pronto:
1) Si tienes dos tablas con exactamente la misma estructura, pero con diferencia de uso de los datos, en realidad tienes una sola tabla, donde hay uno o más atributos discriminadores, o bien una jerarquía (generalización). Separarla en dos es como mínimo un error de de modelado.
2) Si tienes una relación opcional, la relación represnentaría una segunda taba (relación 1:N), como entidad débil.
3) Si hay un "dispositivo" como entidad del sistema, o un grupo de ellos relacionados, no pueden estar representados de esa forma. Peor para darte un mejor consejo deberíamos poder entender qué es ese "dispoitivi" y cómo puede existir sin la "empresa".

Más allá de eso, por favor, prestar atención a las normas del foro de BBDD.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/07/2014, 05:24
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: borrar registro dentro de tabla mysql

Todo lo tengo hecho de forma dinámica, creando diferentes tablas según se insertan diferentes dispositivos, y añadiendo a su vez distintos botones para que me borre tablas, inserte contenido, información de usuarios...lo puse resumido para intentar explicarme mejor...

En efecto, el fallo estaba en que no sabia que con delete, no podía borrar un solo campo, sino siempre un registro. Realicé la consulta con update y me funciona correctamente.

Muchas gracias.
  #6 (permalink)  
Antiguo 21/07/2014, 05:28
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: borrar registro dentro de tabla mysql

Con respecto a las normas del foro...yo tenía este tema expuesto en el foro de php pero me lo movieron aquí, por eso tenía escrito código php, no porque no quisiera seguir las normas =S ...

Muchas gracias.
  #7 (permalink)  
Antiguo 21/07/2014, 05:49
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: borrar registro dentro de tabla mysql

Cita:
Iniciado por elitown87 Ver Mensaje
Todo lo tengo hecho de forma dinámica, creando diferentes tablas según se insertan diferentes dispositivos, y añadiendo a su vez distintos botones para que me borre tablas, inserte contenido, información de usuarios...lo puse resumido para intentar explicarme mejor...
(...)
Estás basándote en un concepto erróneo. La base de datos no es una representación de la aplicación, sino del sistema.
No es exactamente lo mismo.
Una base de datos debe ser flexible, escalable, con una abstracción de datos bastante elevada, y representar los requerimientos de almacenamiento del sistema, pro nunca de los flujos de datos de una aplicación dada.
Lo que estás haciendo es crear un nivel de acoplamiento aplicación/BBDD muy pernicioso, que te llevará eventualmente a cuellos de botella insuperables.
Antes de seguir adelante, te recomiendo replantear el modelo de datos para aislarlo antes de que te traiga problemas.

Pero, bueno, puede implicar bastante trabajo...
__________________
¿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: formulario, php, registro, tabla
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 14:01.