Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/12/2014, 09:42
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: 17 años, 2 meses
Puntos: 2658
Respuesta: Borrar un registro con JOIN

En ese ejemplo tienes tres errores:

1) Si ya definiste alias para las tablas, usa los alias. Pueden darse errores de interpretación por parte del parser de MySQL que no son sencillos de diagnosticar. Acostúmbrate a usar los alias.

2) Asegurate siempre de los nombres de las columnas. MySQl te dice que en la tabla "AUTOS" no existe ninguna columna denominada "MATRICULA". Verifica bien el nombre antes de asumir que hay un error de MySQL (los errores son siempre del desarrollador, no del DBMS).

3) Ese valor que pones en el WHERE como perteneciente a una matrícula disparará un error de columna desconocida, porque como ya te dije, MySQL no entiende variables de los lenguajes de programación. Cuando creas dinámicamente una consulta, los valores de las variables deben entrar a la sentencia SQL como datos que el SQL reconozca como tales.
En esencia, si son números, van sin apóstrofos, pero si son alfanuméricos deben ir entre apóstrofos sí o si
Código MySQL:
Ver original
  1. DELETE V, A FROM vehiculo V INNER JOIN autos A ON V.matricula=A.matricula
  2. WHERE A.matricula='AMD486';
MySQL (y cualquier DBMS) tomará como nombre de un objeto de base de datos (tabla, columna, base, etc.) cualquier cosa que no sea una clausula y que comience por una letra. En ese contexto, MySQL asumirá que AMD486 es el nombre de una columna, a menos que lo pongas entre apóstrofos.

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)