【发布时间】:2017-02-01 03:20:33
【问题描述】:
我问这个是因为我找不到使用左连接查询多个表的确切示例,而且我对使用连接有点陌生。我在这里要做的是加入表user_list 和leave_record,以便从基于user_list 表的两个表中获取数据。因为不这样做,一些还没有休假记录的用户将不会被显示出来。
现在当我运行以下代码时,它显示Unknown column 'a.id' in 'on clause'。但是该列确实存在于我的表中。如果有人能指出我的错误,我将不胜感激。先感谢您。 :-)
SELECT a.id,
CONCAT(a.firstname, a.lastname) AS "name",
a.date_joined,a.job_status,
d.description,
d.annual_cf AS 'allowed_cf',
f.2016 AS "lastyear",
g.2016 AS "last_annual_cf",
h.2016 AS "ot_convert",
f.2017 AS "current_ent",
g.2017 AS "current_annual_cf",
h.2017 AS "current_ot_convert",
SUM(CASE WHEN b.start_date BETWEEN c.entitlement_start_date AND
c.entitlement_extention_date AND
b.submit_date BETWEEN c.entitlement_start_date AND
c.system_freez_start_date AND b.leave_type = '1' AND
b.s_status = 'Approved' AND b.status <> 'Canceled'
THEN b.no_days ELSE 0 END) a_annual
FROM user_list a,
leave_records b,
system_settings c,
job_category d,
annual_leave_ent f,
annual_cf g,
ot_convert h
LEFT JOIN (SELECT id FROM leave_records) AS ba
ON a.id = ba.id
WHERE f.id = a.id AND a.enabled <> 'no' AND g.id = a.id AND h.id = a.id AND
d.id = a.job_category AND a.company='14' AND
c.year_id='2016'
GROUP BY a.id
ORDER BY a.id
【问题讨论】:
-
您使用了别名
b两次。此外,您使用的是旧式连接语法。尽量避免在FROM子句中放置逗号。 -
我已经编辑了我的代码并将我的左连接别名更改为
ba,但结果仍然相同..不是逗号分隔表格吗?。 -
为什么在列别名周围使用单引号?使用
AS "name"或仅使用AS name而不是AS 'name'。 -
我以为它们是一样的……谢谢蒂姆。
-
结果还是一样..还是返回错误
Unknown column 'a.id' in 'on clause'