Hola Killerx_8937:
Vayamos por partes para resolver tus dudas:
Cita: aqui va mi consulta al intentar usar using me di cuenta que los campos relacionados deben tener el mismo nombre o no?
USING(Equipos_Codigo)
Efectivamente, cuando utilizas USING el campo se debe llamar igual en las dos tablas que intentas unir, (de hecho es una buena práctica de SQL llamara a las llaves foráneas de la misma manera que sus llaves a las que hacen referencia, pero en realidad esas es una forma de ahorrar código... Tu puedes especificar el nombre de tus campos sin ningún problema. Checa este script:
Código MySQL:
Ver original+------+-------------+
| id | descripcion |
+------+-------------+
| 1 | uno |
| 2 | dos |
| 3 | tres |
+------+-------------+
+---------+-------------+
| otro_id | descripcion |
+---------+-------------+
| 1 | uno |
| 2 | two |
+---------+-------------+
observa que el campo llave no tiene el mismo nombre, por lo tanto tú puedes hacer la unión especificando los nombres de cada tabla, así:
Código MySQL:
Ver original+------+-------------+---------+-------------+
| id | descripcion | otro_id | descripcion |
+------+-------------+---------+-------------+
| 1 | uno | 1 | uno |
| 2 | dos | 2 | two |
+------+-------------+---------+-------------+
En otras palabras
Código:
USING(Equipos_Codigo)
es una abreviación de
tabla1.Equipos_Codigo = tabla2.Equipos_Codigo
Por lo tanto, no es indispensable que el campo se llame igual en tus tablas. Ahora bien siguiendo con tu problema. Te comentaba que para saber si un registro esta en una tabla pero no en otra lo podías hacer de tres maneras distintas... Con LEFT JOIN, con NOT EXISTS y con NOT IN. Veamos cada caso...
Supongamos que te interesa saber qué id's de tu tabla1 no están en tu tabla2, podrías hacerlo así:
CON LEFT JOIN:
Código MySQL:
Ver original+------+-------------+
| id | descripcion |
+------+-------------+
| 3 | tres |
+------+-------------+
CON NOT IN:
Código MySQL:
Ver original+------+-------------+
| id | descripcion |
+------+-------------+
| 3 | tres |
+------+-------------+
CON NOT EXISTS:
Código MySQL:
Ver original -> WHERE tabla1.id
= tabla2.otro_id
); +------+-------------+
| id | descripcion |
+------+-------------+
| 3 | tres |
+------+-------------+
La principal diferencia entre los métodos es la posibilidad de comparar contra más de un campo.
NOT IN SÓLO TE PERMITE COMPARAR UN CAMPO A LA VEZ, en este caso el id, pero observa que la descripción de la tabla2 para el id=2 no es la misma... Si quisieras comparar por ambos campos NO PODRÍAS HACERLO CON NOT IN... pero si podrías hacerlo con el LEFT JOIN y con el NOT EXISTS:
CON EL LEFT JOIN:
Código MySQL:
Ver original -> tabla1.descripcion = tabla2.descripcion
+------+-------------+
| id | descripcion |
+------+-------------+
| 2 | dos |
| 3 | tres |
+------+-------------+
CON EL NOT EXISTS:
Código MySQL:
Ver original -> tabla1.descripcion = tabla2.descripcion);
+------+-------------+
| id | descripcion |
+------+-------------+
| 2 | dos |
| 3 | tres |
+------+-------------+
Observa que en estos dos casos también se lista el registro (id=2, descripcion='dos') porque en la tabla2 existe el mismo id, PERO NO TIENE LA MISMA DESCRIPCIÓN.
Saludos
Leo.