Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 错误代码1066 sqlstate 42000不是唯一的表别名_Mysql - Fatal编程技术网

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