Мой запрос выбирает всех клиентов, КРОМЕ клиентов, которые в настоящее время имеют активное занятие (если у них активное занятие, то у них будет ссылка с таблицей занятости, где конечная дата равна NULL).
Я объединяю LastName и FirstName клиента, чтобы установить DisplayMember элемента Listbox, и хочу установить ValueMember этого элемента на Id клиента.
// Select all of the clients except for the ones who have an active occupancy
// (if they have an occupancy with no end date)
string query = "SELECT Id, CONCAT(LastName, ', ', FirstName) AS Name FROM Client " +
"EXCEPT " +
"SELECT Id, CONCAT(LastName, ', ', FirstName) AS Name FROM Client " +
"RIGHT JOIN Occupancy ON Client.Id = Occupancy.ClientId " +
"WHERE Occupancy.EndDate IS NULL ORDER BY Name ASC";
using (connection = new SqlConnection(connectionString))
using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
{
DataTable dTable = new DataTable();
adapter.Fill(dTable);
listClients.DisplayMember = "Name";
listClients.ValueMember = "Id";
listClients.DataSource = dTable;
}
Однако, когда я запускаю его, я получаю сообщение об ошибке «Неоднозначное имя столбца« Id ». '
Было бы лучше добавить столбец «ActiveOccupancy» в мою таблицу клиентов, чтобы избежать этой проблемы, или есть способ обойти это? Спасибо.