2013-05-07 2 views
2

Я пытаюсь присоединиться к вашим таблицам, и есть одно значение Sum, но оно не показывает никаких ошибок, но его неправильное значение ... но если я присоединяюсь к двум таблицам, он работает правильно.Запрос на объединение трех таблиц с суммой

запрос является

SELECT tblEmployeeInfo.EmpCode, 
     SUM(tblLeave.lvDay) AS Total, 
     tblAtData.card_no 

FROM tblEmployeeInfo 
INNER JOIN tblLeave ON tblEmployeeInfo.EmpCode = tblLeave.lvEmpId 
INNER JOIN tblAtData ON tblEmployeeInfo.EmpCardID = tblAtData.card_no 

WHERE (tblLeave.lvMonth = @month) 

GROUP BY tblEmployeeInfo.EmpCode, tblAtData.card_no 

ответ

1

Вы должны вычислить SUM в подзапроса tblLeave, а затем JOIN таблицы:

SELECT tblEmployeeInfo.EmpCode, 
      tblLeave.SUMlvDays AS Total, 
      tblAtData.card_no 

    FROM tblEmployeeInfo 
    INNER JOIN 
     (select lvEmpId, SUM(lvDay) as SUMlvDays 
        from tblLeave 
      WHERE (tblLeave.lvMonth = @month) 
     group by lvEmpId) tblLeave 

      ON tblEmployeeInfo.EmpCode = tblLeave.lvEmpId 

    INNER JOIN tblAtData ON tblEmployeeInfo.EmpCardID = tblAtData.card_no 
    GROUP BY tblEmployeeInfo.EmpCode, tblAtData.card_no 
+0

Его Рабочая благодарственные очень-много VAlex .... Просто добавьте «tblLeave.SUMlvDays» в группе ... Thanx .. –

0
SELECT tblEmployeeInfo.EmpCode, 
     tblLeave.SUMlvDays AS Total, 
     tblAtData.card_no 

FROM tblEmployeeInfo 
INNER JOIN 
    (select lvEmpId, SUM(lvDay) as SUMlvDays 
       from tblLeave 
     WHERE (tblLeave.lvMonth = @month) 
    group by lvEmpId) tblLeave 

     ON tblEmployeeInfo.EmpCode = tblLeave.lvEmpId 

INNER JOIN tblAtData ON tblEmployeeInfo.EmpCardID = tblAtData.card_no 
GROUP BY tblEmployeeInfo.EmpCode, tblAtData.card_no,tblLeave.SUMlvDays 
Смежные вопросы