Tutorial de MySQL - Conjunción Externa de Tablas


En una conjunción externa se muestran todas las filas de  una determinada tabla y la otra tabla se adapta a la primera. En una conjunción externa se muestran todas las filas de una tabla y las filas de esta tabla que no existan en la segunda tabla se mostrarán como campos vacíos en la segunda tabla, es decir, en una conjunción externa hay dos tablas, la primera se muestra completa y la segunda adapta sus filas a los valores de la primera. Para realizar una conjunción externa podemos usar LEFT JOIN para indicar que la tabla a la izquierda es la que se mostrará completa y RIGHT JOIN para indicar que la tabla a la derecha es la que se mostrará completa. Entonces la estructura queda como sigue:
  • tablaCompleta LEFT JOIN tabla que adapta sus filas
  • tabla que adapta sus filas RIGHT JOIN tablaCompleta
Es importante señalar que al decir tabla completa, significa que se mostrarán todas las filas, pero no es obligatorio que se muestren todas las columnas, eso es opcional, de modo que si podemos decidir que columnas ver y cuales no.
Otro punto importante que recordar es que en la conjunción externa también debe haber columnas comunes en las tablas que se vincularán, de forma que la estructura de la consulta queda como sigue:
SELECT columnas que se mostrarán FROM tabla completa LEFT JOIN tabla que se adapta ON columna común = columna común
Para entender un poco mejor, supongamos que tenemos dos tablas, una llamada comentarios y otra llamada usuarios, como se muestra a continuación:
                id            contenido                                                     autor
                7             mmm solo mi humilde opinion                             andres
                2             holass como estas                                      rayworld
                3             YO ESTOY MUY BIEN Y TU                        rayworld
                4             mmm no se que poner                             rayworld
                5             todo anda muy bien por aca                    rayworld
                6             mmmm la verdad no se que me scede rayworld
















nick                       pais
rayworld             Mexico
 Susana              Chile
Edgar                  Colombia

Ahora supongamos que queremos mostrar todas las filas de la tabla comentarios y que se muestre el país de la persona que escribió el comentario, entonces debemos realizar una conjunción externa como se muestra a continuación:
SELECT autor, contenido, nick, pais FROM comentarios LEFT JOIN usuarios ON comentarios.autor = usuarios.nick



autor   
contenido                                           
              nick
pais    
andres   
mmm solo mi humilde opinion               
              NULL
NULL   
rayworld
holass como estas                               
          rayworld
Mexico
rayworld
YO ESTOY MUY BIEN Y TU                    
          rayworld
Mexico
rayworld
mmm no se que poner                         
          rayworld
Mexico
rayworld
todo anda muy bien por aca                  
          rayworld
Mexico
rayworld
mmmm la verdad no se que me scede   
          rayworld
Mexico
Como se puede observar se han mostrado todas las filas de la tabla comentarios pero únicamente las filas de la tabla usuarios que corresponden a las filas de la tabla comentarios, y cuando no hay filas de la tabla usuarios que correspondan a comentarios se han mostrado campos vacíos, es decir, la tabla usuarios se adapto a la tabla comentarios.
Ahora, en caso de que necesitemos que la tabla  usuarios se muestre completa y que la tabla comentarios se ajuste, entonces la consulta sería como sigue:
SELECT autor, contenido, nick, pais FROM comentarios RIGHT JOIN usuarios ON comments.autor = users.nick
Como se puede observar ahora se ha usado RIGHT JOIN para indicar que la tabla a la derecha es la que se muestra con todas sus filas, es decir, usuarios.
autor   
contenido                                       
nick      
pais      
rayworld
holass como estas                            
rayworld
Mexico   
rayworld
YO ESTOY MUY BIEN Y TU                 
rayworld
Mexico   
rayworld
mmm no se que poner                      
rayworld
Mexico   
rayworld
todo anda muy bien por aca               
rayworld
Mexico   
rayworld
mmmm la verdad no se que me scede
rayworld
Mexico   
NULL     
NULL                                                
Susana  
Chile      
NULL     
NULL                                                
Edgar    
Colombia
Ahora podemos ver que la tabla que se muestra con todas sus filas es Usuarios y que la tabla que muestra solo unas cuantas de sus filas es comentarios.

No comments:

Post a Comment