我正在尝试使用从另一个连接创建的第二个表来连接表。我不确定我是否正确这样做。我收到一个错误代码“每个派生表必须有自己的别名”。创建别名不是我以前做过的事情。你能告诉我如何调整我的查询吗?谢谢。
Select
questionnaire_status.*
FROM
questionnaire_status
LEFT JOIN
(SELECT
rep_list.Last_Name,
rep_list.First_Name,
dept_codes.dept_name
FROM
rep_list
Left Join
dept_codes
ON
rep_list.dept =dept_codes.dept_id
)
ON
questionnaire_status.RR = rep_list.RR
WHERE
questionnaire_Status.Attestation_submitted = '0'
答案 0 :(得分:1)
您目前正在使用subquerys,除非绝对必要,否则您不应该这样做。 (< - 表现非常糟糕) 更好的是多个联接是这样的:
SELECT
questionnaire_status.*,
rep_list.Last_Name,
rep_list.First_Name,
dept_codes.dept_name
FROM
questionarrie_status
LEFT JOIN
rep_list
ON
questionnaire_status.RR = rep_list.RR
LEFT JOIN
dept_codes
ON
rep_list = dept_codes.dept_id
LEFT JOIN
questionarrie_status
WHERE
questionnaire_Status.Attestation_submitted = '0'
答案 1 :(得分:0)
使用as
关键字为子查询添加别名:
Select
questionnaire_status.*
FROM
questionnaire_status
LEFT JOIN
(SELECT
rep_list.Last_Name,
rep_list.First_Name,
rep_list.RR,
dept_codes.dept_name
FROM
rep_list
Left Join
dept_codes
ON
rep_list.dept =dept_codes.dept_id
) as tbl_alias
ON
questionnaire_status.RR = tbl_alias.RR
WHERE
questionnaire_Status.Attestation_submitted = '0
但您需要将连接列添加到内部选择中,如上所述
答案 2 :(得分:0)
为了得到你想要的结果想想,你所要做的就是:
Select
questionnaire_status.*
FROM
questionnaire_status
LEFT JOIN rep_list ON questionnaire_status.RR = rep_list.RR
LEFT JOIN dept_codes ON rep_list.dept = dept_codes.dept_id
至于别名,当你这样做时,你正在创建别名“我”:
SELECT * FROM myTable me;
MySQL抱怨你的子查询没有别名:
(SELECT
rep_list.Last_Name,
rep_list.First_Name,
dept_codes.dept_name
FROM
rep_list
Left Join
dept_codes
ON
rep_list.dept =dept_codes.dept_id
)
^^^ It wanted an alias here, to cover the subquery
因此,下次有子查询时,请执行以下操作:
(SELECT
rep_list.Last_Name,
rep_list.First_Name,
dept_codes.dept_name
FROM
rep_list
Left Join
dept_codes
ON
rep_list.dept =dept_codes.dept_id
) REP
^^^ MySQL has an alias (named REP) so it's happy now