alasql использовать нумерацию вместо вопросительного знака для запросов - PullRequest
0 голосов
/ 20 декабря 2018

Я использую Alasql для объединения объектов json.

У меня есть этот запрос alasql:

SELECT Employment.*, 
       EmploymentCore.CompanyCode AS EmploymentCore_CompanyCode,       
       Accumulator_DaysInAdvance.VacationYearValue AS Accumulator_DaysInAdvance_Value,
       Accumulator_AgreementYearlyDays.VacationYearValue AS Accumulator_AgreementYearlyDays_Value,
       Person.UserId AS Person_UserId, 
      FROM ? AS EmploymentCore 
RIGHT JOIN ? AS Employment 
        ON Employment.Id = EmploymentCore.Id 
 LEFT JOIN ? AS Accumulator_DaysInAdvance
        ON Accumulator_DaysInAdvance.WorkNumber = Employment.WorkNumber
       AND Accumulator_DaysInAdvance.AccumulatorId = 'b82'
       AND Accumulator_DaysInAdvance.AccumulatorType = 'd'
 LEFT JOIN ? AS Accumulator_AgreementYearlyDays
        ON Accumulator_AgreementYearlyDays.WorkNumber = Employment.WorkNumber
       AND Accumulator_AgreementYearlyDays.AccumulatorId = 'b59'
       AND Accumulator_AgreementYearlyDays.AccumulatorType = 'n'
      JOIN ? AS Person 
        ON Person.Id = EmploymentCore.PersonId 

И у меня есть эти объекты:

  1. EmploymentCore
  2. Занятость
  3. Аккумулятор
  4. Персона

Аккумулятор является избыточным в запросе.Таким образом, вместо того, чтобы дважды передать объект «Аккумулятор», есть ли способ использовать числа вместо?

Как:

SELECT Employment.*, 
           EmploymentCore.CompanyCode AS EmploymentCore_CompanyCode,       
           Accumulator_DaysInAdvance.VacationYearValue AS Accumulator_DaysInAdvance_Value,
           Accumulator_AgreementYearlyDays.VacationYearValue AS Accumulator_AgreementYearlyDays_Value,
           Person.UserId AS Person_UserId, 
          FROM $1 AS EmploymentCore 
    RIGHT JOIN $2 AS Employment 
            ON Employment.Id = EmploymentCore.Id 
     LEFT JOIN $3 AS Accumulator_DaysInAdvance
            ON Accumulator_DaysInAdvance.WorkNumber = Employment.WorkNumber
           AND Accumulator_DaysInAdvance.AccumulatorId = 'b82'
           AND Accumulator_DaysInAdvance.AccumulatorType = 'd'
     LEFT JOIN $3 AS Accumulator_AgreementYearlyDays
            ON Accumulator_AgreementYearlyDays.WorkNumber = Employment.WorkNumber
           AND Accumulator_AgreementYearlyDays.AccumulatorId = 'b59'
           AND Accumulator_AgreementYearlyDays.AccumulatorType = 'n'
          JOIN $4 AS Person 
            ON Person.Id = EmploymentCore.PersonId 
...