En este artículo se muestra un ejemplo sencillo de unión de distintas tablas de atributos y capas con geometría mediante el método join en QGIS.
Se trata de una opción tremendamente útil si queremos cruzar información de distintas fuentes o importar datos de una tabla externa sobre una capa con geometría.
¿Qué es un join y para qué sirve?
El método join es usado típicamente al trabajar con bases de datos. De hecho es una sentencia SQL básica muy utilizada, indispensable para consultar múltiples tablas en una base de datos.
Existen diversos tipos de uniones según qué valores deseen combinarse y mantenerse, atendiendo a ciertas restricciones y normas sobre el comportamiento del propio join.
Mediante un join se pueden combinar registros de múltiples tablas para derivar otras tablas o vistas y así poder acceder a la información deseada. Para realizar una unión de tablas debe existir como mínimo un campo común en ambas que permita vincularlas.
Un ejemplo típico sería tratar de unir una tabla que contiene, por un lado, los registros de todos los alumnos de una escuela con otra tabla que contenga, por ejemplo, el nombre de su profesor o la clase a la que pertenecen.

De este modo se pueden combinar dos tablas separadas, que contienen información distinta, mediante un campo común. Ese campo generalmente es un identificador único de una de de las tablas y hace de llave entre ambas.
Join de capas con geometría
En el caso de capas que contengan geometría el funcionamiento es exactamente el mismo. La unión o join se ejecuta entre dos o más tablas tengan o no geometría.
En este sentido, podemos importar atributos y registros de una tabla no espacial sobre una capa cuya tabla sí tiene componente espacial. La intención es combinar esas capas y tablas con tal de cruzar u obtener una serie de campos y registros contenidos en otras.
Para ello vamos a mostrar a modo de ejemplo la importación de campos de tablas (sin geometría) sobre una capa que sí contiene geometrías a partir de campos comunes. Concretamente, utilizaremos una capa poligonal con la ocupación del suelo del SIOSE.
Unión de capas y tablas en QGIS
Nuestro objetivo es llegar a obtener el tipo de cobertura y su descripción para cada polígono ya que en la capa geométrica no existe un campo con dicha información aunque sí un identificador único de polígono que funciona como llave.

La unión se realizará para todos aquellos registros coincidentes en los dos campos utilizados en el join. Todos aquellos registros que no tengan su homónimo en la tabla que se pretende unir, quedarán desiertos (null). Este método de QGIS, por lo tanto, realiza el denominado «left join» y no un «inner join».
En este caso, la capa geometrica «T_POLYGON» contiene un campo con un identificador único («id_polygon»), el código del SIOSE y la superfície del polígono. El campo «id_polygon» nos permitirá enlazar con la tabla externa denominada «T_VALORES_12».

La tabla «T_VALORES_12», a su vez, contiene ese mismo campo «id_polygon» y el campo «id_cobertura». Ése campo es precisamente un identificador único que funciona como llave para enlazar con una tercera tabla denominada «TC_SIOSE_COBERTURAS» que contiene los campos «id_cobertura» y «descripcion».

Así pues, vamos a ver cómo realizar ese doble join en QGIS.
Cómo hacer un join de capas en QGIS
Para realizar un join con QGIS debemos cargar las capas y tablas con las que deseamos trabajar.

Seleccionando la capa «T_POLYGON» y haciendo clic derecho accederemos a propiedades y a continuación, en el menú lateral, a «uniones». Una vez allí crearemos un primer join (icono +) y se desplegará una ventana desde donde introducir los parámetros de unión.
Nos interesa unir la capa geométrica con la tabla «T_VALORES_12» para obtener el campo «id_cobertura». La llave entre ambas tablas será el campo «id_polygon».

Al validar la unión se generará un nuevo campo sobre la tabla de nuestra capa de geometrías donde aparecerá el campo perteneciente al identificador único de coberturas.
QGIS asigna el prefijo de la capa sobre el nuevo campo generado para mejor identificación del origen del mismo, aunque este es modificable desde la misma ventana de configuración del join.
A continuación deberemos unir la capa «TC_SIOSE_COBERTURAS» utilizando ese campo nuevo, relacionándola mediante el atributo «id_cobertura». Añadiremos un nuevo join para importar el campo «descripcion» a nuestra tabla de geometrías:

Una vez se haya validado el join, si accedemos a la tabla de la capa «T_POLYGON» veremos que se han añadido los dos campos de sus respectivas tablas.

Es importante destacar que esta unión es temporal y sólo se consolidará al exportar nuestra capa tras haber realizado el join. En caso de eliminar las uniones de tablas desde propiedades de capa los campos se eliminarán.
De este modo ya tenemos la información del tipo de cobertura («id_cobertura») y la descripción del mismo («descripcion») desde tablas externas y podemos usar los campos para realizar las representaciones cartográficas necesarias.
hola buenos dias, realizo los mismos pasos y me devuelve null en la union. Tenes idea como solucionarlo?