In QGIS 2.2, there is a bug which involves using the JOINS properties on a vector layer (that is already being joined with several other vector layers) whereby the attributes are not fully loaded.


Result_Layer > Middle_Layer > Layer_1
                            > Layer_2
                            > Layer_3

In the above case, the Result_Layer will only show the values of its own columns and their respective fields and about a dozen columns coming from the Middle_Layer and their respective values before showing NULL for the rest of the attribute table.

The number of column and field attributes I am using in total is extensive ( ~200 columns; ~20,000 fields) so I haven't tested this on a much smaller scale.

The workaround at the moment is to re-join the Result_Layer to the Middle_Layer.


I've been looking at refreshing the mapCanvas() to see if that would somehow 'rejoin' the layers and bring back the values. I've tried the following in the Python console:

from qgis.utils import iface

It probably refreshes but doesn't automatically rejoin. I tried also using self.iface.mapCanvas().refresh() but I get an error.

This is for a client who wants to stick with QGIS 2.2 and does not want to use PostGIS/SpatiaLite as suggested by @mapBaker. Therefore, the only alternative I can think of is to write a script that automatically rejoins all layers when loading up the project.

Also, as a matter of curiosity, is this problem fixed in QGIS 2.4?

  • Are you using shapefiles? Aug 18, 2014 at 15:42
  • @mapBaker, yes - polygon shapefiles.
    – Joseph
    Aug 19, 2014 at 9:06
  • 1
    any chance you could load your data into SQLite via QGIS and try these joins out in a relational-database environment? Aug 19, 2014 at 15:01
  • 1
    It still behaves the same in 2.4, but this feature can be expected for 2.6. Aug 27, 2014 at 11:02
  • 1
    @Joseph I don't even remember the details, but thanks anyway :) Mar 22, 2016 at 16:26

1 Answer 1


This has been fixed in QGIS 2.6 so any recent QGIS version will have this problem solved.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.