Home > Mysql > Uso de Join en mysql ejemplos practicos

Supongamos que tenemos dos tablas y deseamos unirlas ¿pero como las queremos unir? ¿por los registros conicidentes? ¿los que coinciden en tabla A? ¿los que coinciden en tabla B?  ¿o algun otro?

Supongamos que tenemos las siguientes dos tablas. Tabla A está a la izquierda, y en la Tabla B está a la derecha. Vamos a poblar con cuatro registros cada una.

ID NAME
Tabla 1
1 Pirate
2 Monkey
3 Ninja
4 Spaghetti
ID NAME
Tabla 2
1 Rutabaga
2 Pirate
3 Darth Vader
4 Ninja

Unamos estas tablas por el campo de nombre de varias maneras diferentes y ver si podemos conseguir un partido conceptual a los diagramas de Venn ingeniosas.

SELECT * FROM TableA
INNER JOIN TableB
ON TableA.name = TableB.name
ID NAME ID NAME
INNER JOIN
1 Pirate 2 Pirate
3 Ninja 4 Ninja

Inner join sólo produce el conjunto de registros que coinciden tanto en los cuadros A y B.

SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
ID NAME ID NAME
Full Outer join
1 Pirate 2 Pirate
2 Monkey null null
3 Ninja 4 Ninja
4 Spaghetti null null
null null 1 Rutabaga
null null 3 Darh Vader

Full Outer join produce el conjunto de todos los registros en el cuadro A y el cuadro B, con registros coincidentes de ambos lados cuando estén disponibles. Si no hay ninguna coincidencia, el lado que falta se contiene nula.

SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
ID NAME ID NAME
LEFT OUTER JOIN
1 Pirate 2 Pirate
2 Monkey null null
3 Ninja 4 Ninja
4 Spaghetti null null

Left outer join produce un conjunto completo de los registros de la Tabla A, con los registros coincidentes (donde esté disponible) de la Tabla B. Si no hay ninguna coincidencia, el lado derecho contendrá nulo.


SELECT * FROM TableA
LEFT OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableB.id IS null
ID NAME ID NAME
LEFT OUTER JOIN
2 Monkey null null
4 Spaghetti null null

Para producir el conjunto de registros sólo de la Tabla A, pero no en la Tabla B, se realiza la misma combinación externa izquierda, a continuación, excluir los registros que no queremos desde la derecha a través de una cláusula de dónde.


SELECT * FROM TableA
FULL OUTER JOIN TableB
ON TableA.name = TableB.name
WHERE TableA.id IS null 
OR TableB.id IS null
ID NAME ID NAME
FULL OUTER JOIN
2 Monkey null null
4 Spaghetti null null
null null 1 Rutabaga
null null 3 Darth Vader

Para producir el conjunto de registros únicos de los cuadros A y B, que realizan la misma combinación externa completa, entonces excluir los registros que no queremos a ambos lados a través de una cláusula where.