Кажется, вы не выполняете $ query1 - $ query3. Вы просто перешли к $ query4, который не будет работать, если другие не были выполнены в первую очередь.
Также
$query4 = "SELECT *, @rank_change = prev_rank - current_rank as rank_change from final_output";
должно быть, вероятно,
$query4 = "SELECT *, @rank_change := prev_rank - current_rank as rank_change from final_output";
, иначе значение rank_change будет просто логическим, true, если @rank_change равно (prev_rank - current_rank), false, если это не так. Но вам вообще нужно @rank_change? Будете ли вы использовать его в следующем запросе? Может быть, вы можете полностью удалить его.
Еще лучше, вы могли бы просто объединить все запросы в один из них:
SELECT
curr.player,
curr.rank AS current_rank,
@rank_change := prev.rank - curr.rank AS rank_change
FROM
main_table AS curr
LEFT JOIN main_table AS prev
ON curr.player = prev.player
WHERE
curr.date = X
AND prev.date = date_sub('X', INTERVAL 1 MONTH)
В этом сценарии вы можете просто использовать ts.createIdentifier
. Нет выражения доступа к свойству в foo()
.
const statement = ts.createExpressionStatement(
ts.createCall(ts.createIdentifier("foo"), undefined, undefined)
);
Кстати, проверьте мой сайт ts-ast-viewer . Теперь он покажет код API компилятора, который создаст код в редакторе.