员工工资查询错误

时间:2013-09-26 06:26:29

标签: sql

我正在尝试为公司的工资做报告,我想通过使用这样的查询来展示公司的所有员工:

select tab1.name, tab1.job,tab1.salary, tab2.discount-days,
       (tab1.salary-((tab1.salary/30)*tab2.discount-days) as 'total' 
from   tab1, 
       tab2 
where  tab2 .date_discount between date_begin and date_end;

此处仅显示在此期间已经享受折扣的员工,但我想向公司的所有员工展示,如果有人已经在总计中获得折扣显示。

请执行查询以显示所有不仅有折扣的员工

1 个答案:

答案 0 :(得分:1)

您需要使用LEFT JOIN。

select tab1.name, tab1.job,tab1.salary, tab2.discount-days,
       (tab1.salary-((tab1.salary/30)*tab2.discount-days) as 'total' 
from   tab1, 
       tab2 left join tab2  as tab3 on tab2.primary_key = tab3.id.primary_key 
and tab3 .date_discount between date_begin and date_end;

如果使用左连接,左侧表中存在的所有记录都将出现,右侧表中的匹配记录将会出现。

我认为它可能适合你。