【发布时间】:2016-08-11 13:38:49
【问题描述】:
我正在使用 LEFT JOIN 在 Access via SQL 中尝试某些操作,但它似乎不起作用。 Access 不断生成错误“不支持 JOIN 表达式”。
我要完成的工作如下。我有一张有工作卡的桌子和另一张桌子,费用如下。
JOBCARDS
ID JOBNAME
1 Job one
2 Job two
3 Job three
COSTS
ID TYPE COST JOB
1 PART 15.01 1
2 LABOUR 20.00 1
3 LABOUR 40.00 2
4 PART 34.54 3
5 PART 84.67 3
我正在尝试制定一个 SQL 查询,它会给我以下结果:
QUERY
ID JOBNAME PARTS LABOUR
1 Job one 15.01 20.00
2 Job two 0.00 40.00
3 Job three 119.21 0.00
我想出了什么:
SELECT
CARDS.[ID] AS [ID],
CARDS.[JOBNAME] AS [JOBNAME],
SUM (COSTS1.[COST]) AS [PARTS],
SUM (COSTS2.[COST]) AS [LABOUR]
FROM
(([JOBCARDS] CARDS LEFT JOIN [COSTS] COSTS1 ON COSTS1.[JOB]=CARDS.[ID] AND COSTS1.[TYPE]='PART')
LEFT JOIN [COSTS] COSTS2 ON COSTS2.[JOB]=CARDS.[ID] AND COSTS2.[TYPE]='LABOUR')
GROUP BY
CARDS.[ID], CARDS.[JOBNAME];
“COSTS1.[TYPE]='PART'”部分的访问似乎有问题。
有什么方法可以在不使用 LEFT JOIN 的情况下完成我想做的事情? 或者有没有人发现错误?
【问题讨论】:
-
相关子查询。
-
我将仅在作业 ID 上加入 2 个表,并对列使用 iif 语句,例如“Part cost:iif(type="part",cost,0)”和“人工成本:iif(type="Labour",cost,0)"
-
尝试从
(([JOBCARDS] CARDS LEFT JOIN [COSTS] COSTS1 ON COSTS1.[JOB]=CARDS.[ID] AND COSTS1.[TYPE]='PART') LEFT JOIN [COSTS] COSTS2 ON COSTS2.[JOB]=CARDS.[ID] AND COSTS2.[TYPE]='LABOUR')中删除括号在我看来,第二个连接在声明CARDS 别名的括号上下文之外?也许这对 Access 有效,但我觉得它不正确 -
嗨阿迪森。从我在 Access 中看到的情况来看,这些括号似乎是必需的,否则将不接受 JOIN 子句并生成错误。