【问题标题】:Correct the correlation names in my SQL query更正我的 SQL 查询中的相关名称
【发布时间】:2020-02-17 17:24:43
【问题描述】:

我有以下 SQL 查询,我想在其中提取每个项目的计数及其名称,例如我的 SQL 数据库中的“FillingOption”。

我不断收到以下错误消息

消息 1013,第 16 级,状态 1,第 13 行 FROM 子句中的对象“school_to_classroom_teacher”和“school_to_classroom_teacher”具有相同的公开名称。使用相关名称来区分它们。

查询如下:

SELECT 
    COUNT(*) AS count,   
    Monday_Sandwich_Roll_Filling.FillingOption
FROM  
    #tempCustomer 
    INNER JOIN Monday_Sandwich_Roll_Filling 
        ON #tempCustomer.LunchMon=Monday_Sandwich_Roll_Filling.FillingOption 
    INNER JOIN school_to_classroom_teacher 
        ON #tempCustomer.teacherID= school_to_classroom_teacher.teacherID 
    INNER JOIN [teacherClassroom Table] 
        ON #tempCustomer.teacherID= [teacherClassroom Table].teacherID 
    inner join school_to_classroom_teacher 
        on [teacherClassroom Table].teacherID=school_to_classroom_teacher.teacherID 
    inner join SchoolTable 
        on SchoolTable.SchoolID 
WHERE
    (SchoolTable.mondayOn = 1)  
    AND school_to_classroom_teacher.schoolid = 1 
    AND([teacherClassroom Table].Available = 1)```

对混乱的查询表示歉意,但它是 WHERE 子句旁边的“SchoolTable.SchoolID”和“school_to_classroom_teacher strong>" 不喜欢的查询部分。

我尝试过声明SchoolTable.SchoolID AS TEST,但这不起作用。

任何人都有任何想法。

【问题讨论】:

  • 两次使用了相同的名称。服务器无法知道您想在每个ON 子句中使用哪个school_to_classroom_teacher。添加别名,例如INNER JOIN school_to_classroom_teacher t1 on t1.teacherID
  • 你真的需要开始使用别名了
  • 为什么您要加入school_to_classroom_teacher 两次?如果需要,则需要如上所述为每个实例设置别名。此外,您对 SchoolTable 的加入需要设置为等于某个值。
  • 如果您使用同一张表两次,您需要使用alias。检查这个答案stackoverflow.com/questions/8956577/…

标签: sql-server


【解决方案1】:

所以你基本上想这样做(我删除了重复/多余的连接):

SELECT 
    COUNT(*) AS count,   
    Monday_Sandwich_Roll_Filling.FillingOption
FROM  
    #tempCustomer 
    INNER JOIN Monday_Sandwich_Roll_Filling 
        ON #tempCustomer.LunchMon=Monday_Sandwich_Roll_Filling.FillingOption 
    INNER JOIN school_to_classroom_teacher 
        ON #tempCustomer.teacherID= school_to_classroom_teacher.teacherID 
    INNER JOIN [teacherClassroom Table] 
        ON #tempCustomer.teacherID= [teacherClassroom Table].teacherID 
        and [teacherClassroom Table].teacherID=school_to_classroom_teacher.teacherID 
    inner join SchoolTable 
        on SchoolTable.SchoolID 
WHERE
    (SchoolTable.mondayOn = 1)  
    AND school_to_classroom_teacher.schoolid = 1 
    AND([teacherClassroom Table].Available = 1)

但是您上次加入时也缺少加入条件inner join SchoolTable on SchoolTable.SchoolID.....?

【讨论】:

    猜你喜欢
    • 2012-02-15
    • 2021-01-24
    • 2020-10-31
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多