Member 13268442 Ответов: 2

Как исправить неоднозначное имя столбца "id" при внутреннем соединении таблиц в VB.NET


SqlStr = "select ROW_NUMBER() OVER (ORDER BY id) AS [Sno],Employees.EmpID,Employees.contactno,Empname as [имя сотрудника],WorkType,ClientName,SiteName,Siteschedule.TotalHours как [суммированного учета рабочего времени] от Siteschedule внутреннее соединение клиентов на клиентов.параметр ClientID=Siteschedule.ClientID таким образом, внутреннее соединение, сайты на сайтах.Значения Siteid=Siteschedule.SiteID inner join Employees on Employees.EmpID=Siteschedule.empid где (StartDateValue между " & TxtStartDate.Значение.Дата.ToOADate & " и " & TxtEndDate.Значение.Дата.В описании метода tooadate &ампер; ") " &амп; подстрока

когда ошибка innerjoining это двусмысленно идентификатор имя_столбца

Что я уже пробовал:

я попробовал одно решение, но не изменить ту же ошибку

2 Ответов

Рейтинг:
2

MadMyche

Эта ошибка означает, что существует столбец ИДЕНТИФИКАТОР в нескольких таблицах; и запрос не знает, какая из них вам нужна. Исправить это, квалифицировать это с именем таблицы.
Тем не менее, исправьте свое предложение WHERE, поскольку оно созрело для SQL-инъекции; никогда не создавайте команду Sql с использованием строковых методов, то, что вы должны использовать, - это параметры

// just the WHERE condition of the statement for brevity
SqlStr ="WHERE (StartDateValue BETWEEN @StartDate AND @EndDate)" 
cmd.Parameters.AddWithValue("@StartDate", TxtStartDate.Value.Date.ToOADate);
cmd.Parameters.AddWithValue("@EndDate", TxtEndDate.Value.Date.ToOADate);


Рейтинг:
1

Bryian Tan

Основываясь на том, что было опубликовано здесь. Этот запрос ссылается на столбец id

select ROW_NUMBER() OVER (ORDER BY id)


Столбец id может существовать в нескольких таблицах

Siteschedule
клиенты
места
Работники

Чтобы устранить эту ошибку, вы можете обновить код для использования псевдонима таблицы, а затем обновить этот фрагмент "ORDER BY id" до чего-то вроде ORDER BY [Table Alias].id

Псевдонимы SQL[^]

Кстати, я бы тоже предложил использовать параметризованный запрос
https://www.aspsnippets.com/Articles/Using-Parameterized-queries-to-prevent-SQL-Injection-Attacks-in-SQL-Server.aspx