Ver Mensaje Individual
  #3 (permalink)  
Antiguo 23/11/2013, 06:11
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Sobre delete entre dos tablas.

Es un problema muy, pero muy básico. Resulta difícil entender por qué te puede causar problemas.
Planteemos la cosa de dos formas:
1) Si ya conoces el código de ese club, sólo necesitas indicar eso:
Código MySQL:
Ver original
  1. DELETE FROM persona
  2. WHERE codClub = 5
Es obvio que, de acuerdo a la descripcion que pones en el post de esa tabla, no puedes consultar por el nombre del equipo, por cuanto éste está en otra tabla.

2) Usando el nombre, hay dos modos.
a) Con una subconsulta:
Código MySQL:
Ver original
  1. DELETE FROM persona
  2. WHERE codClub IN(SELECT codClub FROM club WHERE nomClub = 'Real Madrid');
b) Con un JOIN:
Código MySQL:
Ver original
  1. DELETE p FROM persona p INNER JOIN club c ON p.codClub = c.codClub
  2. WHERE c.nomClub = 'Real Madrid');

Personalmente me quedaría con la primera de estas dos formas, porque es más entendible y segura.

PD: Esto lo puedes ver claramente en el manual de referencia. Úsalo. Es lo que hacemos todos, incluyendo a quienes tenemos años de experiencia, porque nadie se pone a memorizar todo.

http://dev.mysql.com/doc/refman/5.0/...ipulation.html

En cuanto a lo que te comenta @PHPeros, eso tiene impacto si y sólo si usas MySQL instalado sobre Linux. Pero no tiene ningún efecto en Windows, así que dependerá del caso.
De todos modos es muy buena práctica usar puras minúsculas siempre para todo objeto de base de datos. Te ahorras problemas de dificil detección.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)