【发布时间】:2017-08-30 09:59:01
【问题描述】:
我正在处理MS-ACESS 2016,对不同的表进行查询。
这个查询有问题,错误是:
JOIN 操作语法错误
查询:
SELECT r.data AS data,
r.cod_treb AS codi_treballador,
r.cod_proj AS codi_projecte,
r.hores AS hores_reunions,
Nz(ts.hores, 0) AS hores_ts,
Iif(r.hores - hores_ts > 0, r.hores - Nz(ts.hores, 0), 0) AS r_no_fetes
FROM reunions r
LEFT JOIN (SELECT tl.*, j.cod_proj, ts.nom_treb, ts.acronim
FROM ((((timesheet_lines tl
LEFT JOIN timesheets AS t
ON tl.timesheet_id = t.id)
LEFT JOIN justificacions AS j
ON t.id_justificacio = j.id)
LEFT JOIN treballadors AS tw
ON r.cod_treb = tw.cod_treb)
LEFT JOIN projectes AS p
ON r.cod_proj = p.cod_proj)) AS ts
ON r.cod_proj = ts.cod_proj
AND r.cod_treb = ts.cod_treb
AND r.data = ts.data
AND r.cod_treb = ts.cod_treb
AND r.cod_proj = ts.cod_proj;
如果我尝试运行子查询(同样的错误)
SELECT tl.*, j.cod_proj, ts.nom_treb, ts.acronim
FROM ((((timesheet_lines tl, reunions r
LEFT JOIN timesheets AS t
ON tl.timesheet_id = t.id)
LEFT JOIN justificacions AS j
ON t.id_justificacio = j.id)
LEFT JOIN treballadors AS tw
ON r.cod_treb = tw.cod_treb)
LEFT JOIN projectes AS p
ON r.cod_proj = p.cod_proj) AS ts
WHERE r.cod_proj = ts.cod_proj
AND r.cod_treb = ts.cod_treb
AND r.data = ts.data
AND r.cod_treb = ts.cod_treb
AND r.cod_proj = ts.cod_proj;
谢谢。
【问题讨论】:
-
你不应该用那么多括号
-
以
FROM(timesheet_lines AS tl开头的括号可能会在此处使用扳手 -
例如这里
( r.cod_proj = ts.cod_proj )括号是无用的,当然对于每个比较 -
@Jens 我编辑了查询,但出现了新错误
-
Multiple INNER JOIN SQL ACCESS 的可能重复项——您的子查询中的 JOIN 需要更多括号。
标签: sql database ms-access left-join