mysql - 错误代码 1066 sqlstate 42000 不唯一的表别名

标签 mysql

我收到此错误调用不是唯一的表别名,我无法找出问题所在。我有一个连接所有的通用日期表。还有连接两个表的教师表 - 请假和出勤。请帮忙

    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

您还需要对 SELECT 部分中的列进行正确分类:

SELECT
  ...
  lnvt1.Leave_Status, -- you're probably getting this from first join
  mst_teacher.Teacher_Name,
  lnvt2.LeaveDate -- this probably comes from second join

您也不需要每个 ON 子句都使用括号,因此我已将其删除。

关于mysql - 错误代码 1066 sqlstate 42000 不唯一的表别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52381332/

相关文章:

php - 使用自定义查询生成器的多对多实体的 Symfony 表单

MySQL 存储过程 - 计算不同工资率的工资

mysql - 同一张表的多个索引

php - 如果用户在 1 小时内发表超过 5 条评论,则重定向用户

php - 从 MySQL 中检索 HTML 并显示在 textarea 中

带条件的字段的 MySQL SUM,IF(SUM(bill_1) IS NULL, '99' , SUM(bill_1)) AS tot_bill_1

PHP SQL 将文本值插入数据库

java - Hibernate 和 MySQL 超出锁定等待超时(使用 Play Framework )

mysql - 从表中检索离某个日期最近的前 10 个结果并保持升序排序

java - 结果集更新行不起作用