I posted this to gis stack exchange. no answers as yet. Below is essentially the same.
https://gis.stackexchange.com/questions/382141/create-non-trivial-join-view-via-pyqgis-in-a-qgsprocessingalgorithm In the context of QgsProcessingAlgorithm, what is the best way to take information from several layers and output based upon that combination of layers? or: What is wrong with my layer creation? The overall task/procedure I am trying to accomplish is to take several QGIS layers combine them with a query, then output some files based upon that view/join. I have chosen a processing algorithm above a plugin because it seemed to be better fitting than a plugin. What I have tried. Given: A non-trivial SQL select and join (three tables, one geometry, two attributes) named *sql_query*. I am mentioning that it is non-trivial to say that QgsVectorLayerJoinInfo is not something that can be used easily. A geo package with all the tables used in the query at location: /path/to/test.gpkg The tables of the above geo package placed into a QGIS project. A joined layer can be created via: The DB Manager plugin/tool's "SQLWindow". The sql_query can be entered into the Query tab, executed, then "Load as new layer" Or in the python console: spec = f'/path/to/test.gpkg|layerid=0|subset={sql_query}' layer = QgsVectorLayer(spec, 'joined_layer', providerLib='ogr') QgsProject.instance().addMapLayer(layer) Or via ogrinfo: ogrinfo -q test.gpkg -sql <sql_query> In the context of QgsProcessingAlgorithm using same code as what was used in the python console I get: ERROR 1: failed to prepare SQL: <echo of sql_query> In the meantime, I used a workaround. I am guessing I am missing some minor thing.
_______________________________________________ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer