diff --git a/src/libs/middlewares/reqQueryFields.js b/src/libs/middlewares/reqQueryFields.js index 1fe597d38f2cd97e7ea5c96b4ff4c5ae96eb97e1..a383ade2b79072b3055cd8d8548fbbf03a67f129 100644 --- a/src/libs/middlewares/reqQueryFields.js +++ b/src/libs/middlewares/reqQueryFields.js @@ -201,7 +201,19 @@ class ReqQueryFields { let foreignTable = ''; if(value.join.foreignTable) foreignTable = value.join.foreignTable+'.'; // Fazemos o join - req.sql.join(value.table, null, foreignTable+value.join.foreign+'='+value.table+'.'+value.join.primary); + let onClause = ''; + if(Array.isArray(value.join.primary)) { + // Se é um array, montamos a cláusula ON com mais de uma coluna + value.join.primary.forEach((column, index, arr) => { + onClause += foreignTable+value.join.foreign[index]+'='+value.table+'.'+column; + if(index < arr.length-1) { + onClause+=' AND '; + } + }); + } else { + onClause = foreignTable+value.join.foreign+'='+value.table+'.'+value.join.primary; + } + req.sql.join(value.table, null, onClause); // Marcamos o join como feito para não ter problemas hasJoined[value.name] = true; // values[k].hasJoined = true; diff --git a/src/libs/routes/enrollment.js b/src/libs/routes/enrollment.js index 6f5a623c199bab2fbc9da36eaf0e07556337f67c..af0904abc706a04a95108bf65793df068507700b 100644 --- a/src/libs/routes/enrollment.js +++ b/src/libs/routes/enrollment.js @@ -188,8 +188,8 @@ rqf.addField({ field: 'id' }, join: { - primary: 'id', - foreign: 'escola_id', + primary: ['id', 'ano_censo'], + foreign: ['escola_id', 'ano_censo'], foreignTable: 'matricula' } }).addValue({