Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Filter by Categories
ArcGIS Pro

Joining Tables In QGIS

Mastering Table Joins in QGIS: Tips, Tricks, and Best Practices

Geographic Information Systems (GIS) have become an indispensable tool for data analysis and visualization in a wide range of industries. One of the most common yet crucial tasks in GIS is joining datasets based on shared attributes or spatial relationships. In this blog post, we’ll focus on joining tables in QGIS, a popular open-source GIS platform, using attribute fields.

Joining tables allows you to combine datasets to gain insights, create maps, and perform advanced analysis. However, successful joins rely on having a unique, common field in each dataset to match the corresponding records accurately. Based on our recent conversation with GIS enthusiasts, we’ve gathered valuable information and insights on this topic.

Want to stay ahead of the GIS curve? Listen to our podcast!

In this blog post, we’ll cover:

  1. A step-by-step guide to joining tables in QGIS based on attributes.
  2. Frequently asked questions and challenges when joining tables.
  3. Practical ideas to create or identify a unique, common field for successful joins.
  4. Tips for data cleaning and standardization to ensure accurate results.

By the end of this post, you’ll have a solid understanding of table joins in QGIS and the best practices to ensure successful and accurate data merging.

Here are the steps to join data in QGIS:

  1. Open QGIS: Launch QGIS and make sure you have both the vector layer (shapefile or other vector formats) and the attribute table (CSV or other tabular data) you want to join.
  2. Load vector layer and attribute table: Click on “Layer” in the main menu, then “Add Layer” > “Add Vector Layer” to import the vector layer. To import the attribute table, go to “Layer” > “Add Layer” > “Add Delimited Text Layer.”
  3. Check attribute table structure: Open the attribute table by right-clicking on the imported table layer in the “Layers” panel and selecting “Open Attribute Table.” Ensure that there is a field with a unique identifier that can be used to link the vector layer to the attribute table.
  4. Identify the common field: Examine the vector layer and attribute table to find the common field that can be used for the join. It is crucial that the field is unique and contains matching values in both datasets.
  5. Open the Layer Properties: Right-click the vector layer in the “Layers” panel and select “Properties.”
  6. Perform the join: In the Layer Properties window, click on the “Joins” tab. Click on the green plus (+) button at the bottom left of the window to add a new join. In the “Add vector join” window, select the attribute table from the “Join Layer” dropdown. Choose the common field from both the “Join Field” and “Target Field” dropdown menus. (Optional) You can choose a custom prefix for the joined fields, or leave it as the default. Click “OK” to perform the join.
  7. Verify the join: After performing the join, you should see the attribute fields from the attribute table added to the vector layer’s attribute table. To verify, right-click on the vector layer in the “Layers” panel and select “Open Attribute Table.” The new columns from the joined attribute table should be displayed.
  8. Save the result: If you want to save the result as a new shapefile or other vector formats, right-click on the joined vector layer in the “Layers” panel, select “Export” > “Save Features As,” choose your desired format, and specify the output file path.

Remember that joining data in QGIS is based on matching unique values in the common fields of both datasets. Make sure the fields used for joining are consistent and have no errors, as this may affect the accuracy of the joined dataset.

Creating a unique, common field in each pair of datasets is essential for accurate table joining.

Here are some ideas for creating such a field:

  1. Concatenate existing fields: If your datasets don’t have a unique, common field, you can create one by concatenating two or more existing fields in each dataset. This can be done using QGIS’s Field Calculator or using a data manipulation tool like Microsoft Excel, Python, or R.
  2. Use a common ID system: If both datasets represent geographic areas (e.g., countries, states, or counties), you can use a common geographic identifier system like FIPS codes (U.S.), ISO country codes, or any other widely recognized unique identifier.
  3. Create a custom ID field: If your datasets have a shared spatial relationship (e.g., points within polygons), you can perform a spatial join using “Join Attributes by Location” or another spatial operation to assign unique IDs from one layer to the corresponding features in the other layer. This new ID field can then be used as the common field for joining the datasets based on attributes.
  4. Data cleaning and standardization: In some cases, the datasets might have a common field with slight discrepancies, such as different formatting or case sensitivity. You can clean and standardize the field in both datasets to ensure a successful join. This can be done using QGIS’s Field Calculator, Python, R, or spreadsheet software like Microsoft Excel.
  5. Use an external reference dataset: If your datasets lack a unique, common field but have a relationship with a third dataset containing a common field, you can use this third dataset as a bridge to create a new common field. This process might require multiple joins or data manipulation steps.

Remember that the goal is to create a common field with unique and matching values in both datasets. The method you choose will depend on the nature of your datasets and the available information. Always double-check the resulting common field to ensure accuracy and prevent errors during the join process.

Here are some FAQs about joining tables in QGIS

How to choose the right attribute field for joining tables?

Ensure that the chosen attribute field is unique and contains matching values in both datasets to avoid incorrect results or unmatched records.

What happens when there are unmatched records in the join?

Unmatched records in the vector layer will retain their original attributes, while the fields from the joined attribute table will have NULL values.

How to handle discrepancies in attribute fields’ data types or formats?

Make sure that the common attribute fields in both datasets have the same data type and format, as differences might result in an incorrect or unsuccessful join.

How does the join affect the geometry of the vector layer?

The geometry of the vector layer remains unchanged after the join. The join only adds new attributes from the attribute table to the vector layer.

What if the attribute table has duplicate records for the join field?

If there are duplicate records in the attribute table, the join may yield incorrect results, as it can cause one-to-many relationships or duplicated data. Always ensure that the join field is unique in both datasets.

Can I join multiple attribute tables to a single vector layer?

Yes, you can perform multiple joins to a single vector layer using different attribute tables, as long as there is a unique, common field in each pair of datasets.

Can I perform outer joins in QGIS?

QGIS only supports inner joins, meaning that only matching records from the vector layer and attribute table will be retained in the joined output. For outer joins, you may need to use a different GIS tool or manipulate the data using Python or other programming languages.

How can I save the joined layer as a new shapefile or other vector formats?

Right-click on the joined vector layer in the “Layers” panel, select “Export” > “Save Features As,” choose the desired format, and specify the output file path.

About the Author
I'm Daniel O'Donohue, the voice and creator behind The MapScaping Podcast ( A podcast for the geospatial community ). With a professional background as a geospatial specialist, I've spent years harnessing the power of spatial to unravel the complexities of our world, one layer at a time.

Leave a Reply