Como fazer left join com subquery?
Código Fonte:
__includeOnce(-1897036629); /* IQuery.ijs */
var loc = IQuery.from(-1894743013); /* Localizadores */
var med = IQuery.from(-1894743008) /* Medições */
.where([{field: "DATA", operator: ">=", value: new Date(2013, 0, 1)}])
.column([{field: "POSICAOLOCALIZADOR", alias: "POSICAO"}, {field: "MEDICAO"}, {field: "DATA"}]);
// a linha acima pode ser suprimida
loc = loc.leftOuterJoin(med)
.on([{field: "CHAVE", operator: "=", value: med.column({field:"LOCALIZADOR"}) }]);
loc = loc.column([{field: "CHAVE"}]);
loc.toSql();
SQL gerado:
SELECT ENTIDADE1.chave,
EVENTO2.posicao,
EVENTO2.medicao,
EVENTO2.data,
EVENTO2.localizador
FROM entidade ENTIDADE1
LEFT OUTER JOIN (SELECT EVENTO2.posicaolocalizador AS POSICAO,
EVENTO2.medicao,
EVENTO2.data,
EVENTO2.localizador
FROM evento EVENTO2
WHERE ( EVENTO2.data >= '01/01/2013' )
AND ( EVENTO2.classe IN (
-1894833940, -1894815028,
-1894814878,
-1894814870,
-1894814854, -1894814853,
-1894743008,
108008301 ) )) EVENTO2
ON ( ENTIDADE1.chave = EVENTO2.localizador )
WHERE ( ENTIDADE1.classe IN ( -1894743013, 120241501 ) )