Найдено в старых файлах
OleDbConnection thisConnection = new OleDbConnection(
@"Provider = Microsoft.Jet.OLEDB.4.0; Data Source=");
thisConnection.Open();//открыть соединение с БД
OleDbCommand Comm = thisConnection.CreateCommand();
Comm.CommandText ="select distinct from where not in (select distinct from )";
OleDbDataReader dbr = Comm.ExecuteReader();
while (dbr.Read())
{
//работа с данными, полученными из БД
//объект dbr возвращает данные из БД построчно, т.е. на каждой
//итерации цикла осуществляется работа с одной строкой таблицы, а
//в данном случае – с одним значением корня дерева. Если у дерева
//нет ни одного корня (т.е. запрос не возвращает ни одного
//значения), ни одной итерации цикла не совершается.
//Конкретное значение корня можно получить следующим образом:
//dbr[""] или dbr[0] – в этом случае возвращаемое
//значение будет иметь тип odject. Приведение типа осуществляется
//сдедующим образом: ()dbr[""]
}
dbr.Close();
thisConnection.Close();//закрыть соединение с БД
В тексте запроса - имя столбца, соответствующего элементам – предкам, - имя столбца, соответствующего элементам – потомкам, - имя таблица БД.