Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/02/2017, 15:34
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Funcion Delete en 5 tablas en 1 consulta

Hola sebandrescc2:

Efectivamente, puedes eliminar registros de esta forma, aunque no te lo recomiendo... esta forma de hacer múltiples eliminaciones utilizando JOIN's se mantiene por estándar de MySQL, pero no todos los DBMS's lo permiten.

Ahora bien, tu problema en realidad radica en que estás utilizando INNER JOIN, por lo tanto, es necesario que haya registros en TODAS Y CADA UNA DE LAS TABLAS para que se haga la eliminación múltiple.

Una alternativa es que utilices LEFT JOIN's... pero puedes tener algunos problemas debido a que estás utlizando muchas tablas... te sugiero que antes de cualquier prueba respaldes tu información por aquello de las malditas dudas.

Además, tienes un "error" con los JOIN's y es que estás omitiendo la cláusula ON, por lo tanto se está haciendo un producto cartesiano entre tus tablas... en lugar de poner las condiciones de igualdad en el WHERE, ponlas en el ON, que es donde deberían ir. también, en la medida de lo posible EVITA el uso de ALIAS... nada te cuesta poner el nombre completo de tus tablas y eso autodocumenta la consulta.

Entonces tu consulta quedaría más o menos así:

Código MySQL:
Ver original
  1. DELETE proyectos, servicios , pagos , gastos , sueldos
  2. FROM proyectos
  3. LEFT JOIN servicios ON proyectos .id_pro = servicios .id_pro
  4. LEFT JOIN pagos ON proyectos.id_pro = pagos .id_pro
  5. LEFT JOIN gastos ON proyectos.id_pro = gastos .id_pro
  6. LEFT JOIN sueldos ON proyectos.id_pro = sueldos.id_pro
  7. proyectos.id_pro LIKE ". $request['id_pro'];

Finalmente una pregunta, ¿es necesario que hagas una comparación tipo LIKE? es decir, LIKE se utiliza para búsqueda de patrones, utilizando operadores comodín como % o _, si sólo vas a poner valores "fijos" utiliza = en lugar de LIKE:

es decir, en lugar de poner

Código:
proyectos_id_pro LIKE '1'
pon

Código:
proyectos_id_pro = '1'
haz la prueba y nos comentas.

Saludos
Leo.