簡體   English   中英

SQL Server錯誤:列名不明確

[英]SQL Server error: ambiguous column name

我創建了一個接收不同參數的SQL查詢。 當我將參數傳遞給Region-ID出現錯誤:

System.Data.SqlClient.SqlException:不明確的列名'REGION_ID'

當我將數據傳遞給其他參數時,它的工作沒有問題。

我為sql查詢構建了一個字符串:

StringBuilder constrains = new StringBuilder();
AppendConstrain(constrains, "RAUMKLASSE_ID", RAUMKLASSE_ID);
AppendConstrain(constrains, "STADT_ID", STADT_ID);
AppendConstrain(constrains, "GEBAEUDE_ID", GEBAEUDE_ID);
AppendConstrain(constrains, "REGION_ID", REGION_ID);
AppendConstrain(constrains, "RAUMATTRIBUTE_ID", RAUMATTRIBUTE_ID);
AppendConstrain2(constrains, "r.REGION_ID", "reg.ID");
AppendConstrain2(constrains, "r.STADT_ID", "st.ID");
AppendConstrain2(constrains, "r.ETAGE_ID", "et.ID");

這是我的SQL查詢:

StringBuilder query =
            new StringBuilder("SELECT DISTINCT r.BEZEICHNUNG AS BEZEICHNUNG, r.ID AS ID,reg.NAME AS REGNAME, st.NAME AS STNAME, et.BEZEICHNUNG as ETBEZEICHNUNG FROM RAZUORDNUNG rz right join RAUMATTRIBUTE ra ON rz.RAUMATTRIBUTE_ID = ra.ID right join RAUM r ON rz.RAUM_ID = r.ID, REGION reg, STADT st, ETAGE et");

我不知道問題出在哪里?

編輯:

這是追加字符串函數:

private static void AppendConstrain(StringBuilder query, string name, string value)
    {
        if (String.IsNullOrEmpty(value))
            return;

        if (query.Length > 0)
            query.Append(" AND ");

        query.AppendFormat("{0} IN ({1})", name, value);
    }

    private static void AppendConstrain2(StringBuilder query, string name, string name2)
    {
        if (String.IsNullOrEmpty(name2))
            return;

        if (query.Length > 0)
            query.Append(" AND ");

        query.AppendFormat("{0} = ({1})", name, name2);
    }

您有兩個不同的REGION_ID引用:

StringBuilder constrains = new StringBuilder();
AppendConstrain(constrains, "REGION_ID", REGION_ID);
AppendConstrain2(constrains, "r.REGION_ID", "reg.ID");

這些引用中只有一個是合格的( r.REGION_ID )。 你需要完全符合他們的資格。 看起來另一個應該被限定為reg.REGION_ID,例如:

StringBuilder constrains = new StringBuilder();
AppendConstrain(constrains, "reg.REGION_ID", REGION_ID);
AppendConstrain2(constrains, "r.REGION_ID", "reg.ID");

您似乎要為REGION_ID附加兩次約束。

使用表格限定此行:

AppendConstrain(constrains, "REGION_ID", REGION_ID);

AppendConstrain(constrains, "<table/alias>.REGION_ID", REGION_ID);

在您的代碼中,我只能看到一個對REGION_ID的正確引用

AppendConstrain2(constrains, "r.REGION_ID", "reg.ID"); 

對於另一個即

 AppendConstrain(constrains, "REGION_ID", REGION_ID); 

您需要提供引用此ID的表的引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM