28 QStringList leftJoins;
33 columns <<
"t.geometry";
46 QString uid = QStringLiteral(
"uid" );
48 uid += QLatin1String(
"_" );
51 columns <<
"t.rowid AS " + uid;
56 for (
const auto &f : providerFields )
58 columns <<
"t.\"" + f.name() +
"\"";
65 QString joinName = QStringLiteral(
"j%1" ).arg( ++joinIdx );
69 QString prefix = join.prefix().isEmpty() ? joinedLayer->
name() +
"_" : join.prefix();
71 leftJoins << QStringLiteral(
"LEFT JOIN \"%1\" AS %2 ON t.\"%5\"=%2.\"%3\"" ).arg( joinedLayer->
id(), joinName, join.joinFieldName(), join.targetFieldName() );
72 if ( join.joinFieldNamesSubset() )
74 const QStringList joinFieldNamesSubset { *join.joinFieldNamesSubset() };
75 for (
const QString &f : joinFieldNamesSubset )
77 columns << joinName +
".\"" + f +
"\" AS \"" + prefix + f +
"\"";
83 for (
const QgsField &f : joinFields )
85 if ( f.name() == join.joinFieldName() )
87 columns << joinName +
".\"" + f.name() +
"\" AS \"" + prefix + f.name() +
"\"";
92 QString query =
"SELECT " + columns.join( QStringLiteral(
", " ) ) +
" FROM \"" + layer->
id() +
"\" AS t " + leftJoins.join( QStringLiteral(
" " ) );