sql1 = "(((select 部门,姓名,工作天数 from [考勤记录表$]) as A left JOIN" sql2 = " (select 姓名,sum(工作天数) as SUMDAY from [考勤记录表$] group by 姓名) as B ON A.姓名=B.姓名) left JOIN" sql3 = " (select 姓名,职务,来源,用工性质,养老保险基数,公积金基数 from [员工信息表$]) as C on A.姓名=C.姓名) left JOIN" sql4 = " (select 部门,站长工资标准,员工工资标准,站长奖金标准,员工奖金标准 from [DATA$]) as D on A.部门=D.部门" sql = "select A.部门,A.姓名,C.职务,C.来源,C.用工性质,C.养老保险基数,C.公积金基数,A.工作天数,B.SUMDAY,IIF(C.职务 like '站长',D.站长工资标准,D.员工工资标准),IIF(C.职务 like '站长',D.站长奖金标准,D.员工奖金标准 from " sql = sql & sql1 & sql2 & sql3 & sql4 从语法上来看,LEFT JOIN 只允许一层,也即: SELECT 字段 FROM 基准表 LEFT JOIN 后续表 ON 基准表.同型字段=后续表.同型字段 而不能在后面直接继续其它的 LEFT JOIN : SELECT 字段 FROM 基准表 LEFT JOIN 后续表 ON 基准表.同型字段=后续表.同型字段 LEFT JOIN ................ 但如果我们加上括号,就可以把第一层 LEFT JOIN 变成“新基准表”,而在此“新基准表”后面就可以连接 LEFT JOIN 了: SELECT 字段 FROM (基准表 LEFT JOIN 后续表 ON 基准表.同型字段=后续表.同型字段) LEFT JOIN 后续表2 ON 基准表.同型字段=后续表2.同型字段 ↑ 新基准表 所以使用括号,就可以连接多个 LEFT JOIN ,只要保证括号配对,从整体上看只有一个基准表、一个 LEFT JOIN、一个后续表、一个ON即可。 |