Я не уверен, возможно ли это с помощью SQL-запроса, но я попробую.
Я занимаюсь разработкой веб-части SharePoint на C #, которая подключается к базе данных SQL ивыполняет запрос, а затем связывает данные с этим набором результатов в виде таблицы.Работает нормально, но у меня есть небольшая загвоздка.По большей части мой запрос будет возвращать ровно один результат для каждого поля.Я отображаю информацию по вертикали, поэтому она выглядит примерно так:
Customer Name Mr. Customer
Customer Address 980 Whatever St.
Customer City Tallahassee
Все отображается нормально.Однако одна из таблиц в базе данных всегда будет возвращать несколько результатов.В нем перечислены различные типы материалов, используемых для разных продуктов, поэтому схема отличается, потому что, хотя у каждого клиента, очевидно, будет одно имя, один адрес, один город и т. Д., У всех них будет как минимум один продукт, и этот продукт будет иметь вхотя бы один материал.Если бы я отображал эту информацию самостоятельно, она выглядела бы примерно так:
Product Steel Type Wood Type Paper Type
-----------------------------------------------------------------------------
Widget Thick Oak Bond
Whatsit Thin Birch
Thingamabob Oak Cardstock
В идеале, я полагаю, что конечный результат был бы примерно таким:результат может быть что-то вроде следующего, добавив несколько столбцов, но возвращая только несколько результатов для этих полей:
Customer Name Mr. Customer
Customer Address 980 Whatever St.
Customer City Tallahassee
Product Steel Type Wood Type Paper Type
Widget Thick Oak Bond
Whatsit Thin Birch
Thingamabob Oak
Я открыт для любых предложений.Я хотел бы включить это в набор результатов без отдельного запроса, если это возможно.Вот код, который я использую для извлечения данных:
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds, "Specs");
DataSet flipped_ds = FlipDataSet(ds);
DataView dv = flipped_ds.Tables[0].DefaultView;
GridView outputGrid = new GridView();
outputGrid.ShowHeader = false;
outputGrid.DataSource = dv;
outputGrid.DataBind();
Controls.Add(outputGrid);
Я бы перечислил свой SQL-запрос, но он огромен.Сейчас я собираю более сотни полей с большим количеством форматирования и конкатенации SUBSTRING, так что это будет пустая трата места, но это действительно довольно простой запрос, где я выбираю поля с помощью оператора AS, чтобы получитьимена, которые я хочу, и с помощью нескольких левых соединений, чтобы получить нужные мне данные без нескольких запросов.Схема таблицы продукт / материал выглядит примерно так:
fldMachineID
fldProductType
fldSteel
fldWood
fldPaper
Итак, очевидно, что у каждого клиента есть несколько записей, по одной для каждого отдельного значения fldProductType.Если я что-то пропущу, я могу добавить это.Спасибо всем за время и помощь!