我創建了一個接收不同參數的SQL查詢。當我傳遞一個參數只是Region-ID
我得到了一個錯誤:SQL Server錯誤:列名不明確
System.Data.SqlClient.SqlException: Ambiguous column name '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);
}
那太簡單了,謝謝。解決方案是:r.REGION_ID –
爲什麼其他參數在沒有「r」的情況下工作。 ? –
因爲除了'RAUM'外,你可能還有另外一個表,你別名爲'r',它有一個名爲'REGION_ID'的字段。 –