Mysql 错误代码1066 sqlstate 42000不是唯一的表别名
我得到这个错误调用不是唯一的表别名,我无法找出问题。我有一个共同的日期表连接所有。还有连接两张桌子的教师桌子——请假和出勤。请帮忙Mysql 错误代码1066 sqlstate 42000不是唯一的表别名,mysql,Mysql,我得到这个错误调用不是唯一的表别名,我无法找出问题。我有一个共同的日期表连接所有。还有连接两张桌子的教师桌子——请假和出勤。请帮忙 SELECT trns_teacherattendance.Attendance_Status, trns_teacherattendance.Attendance_Month, trns_teacherattendance.AcademicYear_Id, trns_teacherattendance.School_Id,
SELECT
trns_teacherattendance.Attendance_Status,
trns_teacherattendance.Attendance_Month,
trns_teacherattendance.AcademicYear_Id,
trns_teacherattendance.School_Id,
trns_teacherattendance.Bio_Code,
trns_teacherattendance.IsActive,
mst_holiday_teacher.Holiday_Name,
dates.dates,
leave_new_view_teacher.Leave_Status,
mst_teacher.Teacher_Name,
leave_new_view_teacher.LeaveDate
FROM
trns_teacherattendancemapping
LEFT OUTER JOIN
trns_teacherattendance
ON
(
trns_teacherattendancemapping.Bio_Code =
trns_teacherattendance.Bio_Code)
RIGHT OUTER JOIN
dates
ON
(
trns_teacherattendance.Attendance_Date = dates.dates)
LEFT OUTER JOIN
mst_teacher
ON
(
trns_teacherattendancemapping.Teacher_Id =
mst_teacher.Teacher_Id)
RIGHT OUTER JOIN
leave_new_view_teacher
ON
(
mst_teacher.Teacher_Id = leave_new_view_teacher.TID)
LEFT OUTER JOIN
leave_new_view_teacher
ON
(
dates.dates = leave_new_view_teacher.LeaveDate)
LEFT OUTER JOIN
mst_holiday_teacher
ON
(
dates.dates = mst_holiday_teacher.Holiday_Date) ;
您两次加入一个表leave_new_view_teacher,但您没有给它不同的别名。数据库无法知道要从哪个查询/表引用列。每个联接可以提取不同的数据/行 将别名指定给这些表是本部分的最低要求:
RIGHT OUTER JOIN
leave_new_view_teacher AS lnvt1 -- here
ON
mst_teacher.Teacher_Id = leave_new_view_teacher.TID
LEFT OUTER JOIN
leave_new_view_teacher AS lnvt2 -- and here
ON
dates.dates = leave_new_view_teacher.LeaveDate
您还需要对“选择零件”中的列进行正确分类:
您也不需要为每个ON子句使用括号,因此我已将其删除。您能显示准确的错误吗?此外,School3600数据库是语法的可选部分,实际上会分散可读性的注意力。。。不需要,或者我已经移除了可选部件。这正是错误消息错误代码1066 sqlstate 42000非唯一表别名。我已经为此工作了5天,没有得到错误日期背后的想法,并且教师id链接到相同的休假状态,如果分开,则结果将不匹配。请调整您的解决方案,我不可能知道您在写此问题时的想法。您可能只是从一个表中选择SELECT语句中的值,然后在这里选择别名。这是真的Kamil,您的解决方案帮助了我,我有一个解决方案。但我想了解,如果两个表的teacherid都是公共的,并且对于相同的两个表,date也是公共的,那么它会在联接中抛出错误吗?因为日期列来自主日期表。链接还需要教师id。有什么见解吗?@Santu很高兴你想了解它。不同命名的原因是,正如我所提到的,即使您两次连接到同一个表,您连接的列也会产生不同的结果行,这就是为什么它们是不同的,如果您不写下来,数据库就无法确切地知道您的意思。这有意义吗?
SELECT
...
lnvt1.Leave_Status, -- you're probably getting this from first join
mst_teacher.Teacher_Name,
lnvt2.LeaveDate -- this probably comes from second join