Foros del Web » Programando para Internet » PHP »

Donde esta mi error al borrar registros

Estas en el tema de Donde esta mi error al borrar registros en el foro de PHP en Foros del Web. tengo 3 tablas relacionas producto subcategoria categoria y hago el sigte. select select * FROM producto p,subcategoria s,categoria c WHERE p.codscateg=s.codscateg and c.codcateg=s.codcateg and s.codcateg=2 ...
  #1 (permalink)  
Antiguo 29/01/2008, 19:23
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Donde esta mi error al borrar registros

tengo 3 tablas relacionas
producto
subcategoria
categoria

y hago el sigte. select

select * FROM producto p,subcategoria s,categoria c WHERE p.codscateg=s.codscateg and c.codcateg=s.codcateg and s.codcateg=2

Me muestra los registros que pertenen a la categoria=2
Quiero hacer lo mismo pero en vez de hacer una seleccion eliminar los registros y hago lo siguiente:

DELETE FROM producto p,subcategoria s,categoria c WHERE p.codscateg=s.codscateg and c.codcateg=s.codcateg and s.codcateg=2

Mysql me manda este error y no se porque espero su ayuda
You have an error in your SQL syntax near 'p,subcategoria s,categoria c WHERE p.codscateg=s.codscateg and c.codcateg=s.codc' at line 1
  #2 (permalink)  
Antiguo 29/01/2008, 19:44
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Re: Donde esta mi error al borrar registros

DELETE FROM tabla WHERE condicion

Cita:
DELETE FROM producto p,subcategoria s,categoria c WHERE p.codscateg=s.codscateg and c.codcateg=s.codcateg and s.codcateg=2
Eso esta MAL porque despues de FROM va la tabla
__________________
Salu2!
  #3 (permalink)  
Antiguo 29/01/2008, 19:47
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: Donde esta mi error al borrar registros

el problema esta en que mysql no borra registros de esa manera, no puedes poner varias tablas y por consiguiente no puedes usar alias, para eliminar tienes que eliminar de una tabla primero y despues de otras.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #4 (permalink)  
Antiguo 30/01/2008, 10:58
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Re: Donde esta mi error al borrar registros

No creo que no se pueda eliminar registros de 2 tablas en mysql seria una limitacion.
Hago mas pequeña la consulta de eliminacion haber si me ayudan

DELETE FROM categoria,subcategoria
WHERE subcategoria.codcateg=categoria.codcateg
and subcategoria.codcateg=2

Quiero eliminar los registros de 2 tblas cuyo codcateg sea=2, es decir en la tabla categoria elimine todos los registros cuyo codcateg=2 y que elimine la categoria numero 2

Cual es la sintaxis correcta en MYSQL y si no se puede me pueden plantear alguna solucion para lograar lo que quiero

saludos
  #5 (permalink)  
Antiguo 30/01/2008, 11:29
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Re: Donde esta mi error al borrar registros

SELECT FROM categoria WHERE subcategoria.codcateg=categoria.codcateg
and subcategoria.codcateg=2

SELECT FROM subcategoria WHERE subcategoria.codcateg=categoria.codcateg
and subcategoria.codcateg=2

guardas los registros afectados y.... haces el DELETE luego:

DELETE FROM categoria WHERE codcateg = [aca la variable]
DELETE FROM subcategoria WHERE codcateg = [aca la variable]

la [variable] es recorrida por un WHILE, FOR, etc....
__________________
Salu2!
  #6 (permalink)  
Antiguo 30/01/2008, 14:45
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Re: Donde esta mi error al borrar registros

Podrias explicar mejor tu idea
  #7 (permalink)  
Antiguo 30/01/2008, 15:47
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Re: Donde esta mi error al borrar registros

franko1809: busca la forma de alamacenar los registros que cumplen la(s) condicion(es) que impones y luego haz el DELETE sobre ESOS registros.

Intentalo!
__________________
Salu2!
  #8 (permalink)  
Antiguo 30/01/2008, 17:57
 
Fecha de Ingreso: enero-2008
Ubicación: Lima - Perú
Mensajes: 1.127
Antigüedad: 16 años, 3 meses
Puntos: 10
Re: Donde esta mi error al borrar registros

Finalmente al 2do dia encontre solucion a mi problema
Al hacer esta consulta
Código PHP:
SELECT FROM categoria,producto,subcategoria
WHERE subcategoria
.codscateg=producto.codscateg and 
            
categoria.codcateg=subcategoria.codcateg and 
            
subcategoria.codcateg=$cod 
Me mostraba los registros de la tabla productos que queria eliminar y ala vez tambien me mostraba otros campos de las demas tablas por eso al querer eliminarlos haciendo
Código PHP:
DELETE FROM categoria,producto,subcategoria
WHERE subcategoria
.codscateg=producto.codscateg and 
            
categoria.codcateg=subcategoria.codcateg and 
            
subcategoria.codcateg=$cod 
Mandaba un error, investigando me di cuenta que tenia que usar subconsultas para hacer una busqueda y encontrar y eliminar los registros de 1 sola tabla en este caso productos a fin de cuentas el delete quedo de esta manera

Código PHP:
DELETE FROM producto WHERE codscateg IN (
SELECT codscateg
FROM subcategoria
WHERE codcateg
IN 
(
SELECT codcateg
FROM categoria
WHERE codcateg 
=$cod
)

Es decir borra los reg. de la tabla productos que tengan relacion con la subcategoria que a la vez tiene reg, rel. con la tabla categoria.

Otra cosa de la que me di cuenta es que la version de mysql que tenia en mi server local era MySQL(3.23.48) la cual no admite subconsultas asi que probe la suconsulta en un server de internet con la version MySQL 5.0.27 y corre perfectamente

Saludos
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:26.