SQL 쿼리에서 가능한지 확실하지 않지만 한 번 사용해 보겠습니다.조인 된 SQL 쿼리에서 한 필드에 대해 여러 결과가 표시됨
SQL 데이터베이스에 연결하여 쿼리를 실행 한 다음 C#에서 SharePoint 웹 파트를 개발하고 그 결과를 gridview로 설정합니다. 괜찮 으면 좋겠지 만, 나는 작은 걸림 걸이가있다. 대부분의 경우, 쿼리는 모든 필드에 대해 정확히 하나의 결과를 반환합니다. 정보를 세로로 표시하고 있으므로 대략 다음과 같이 보입니다.
Customer Name Mr. Customer
Customer Address 980 Whatever St.
Customer City Tallahassee
모든 것이 정상적으로 표시됩니다. 그러나 데이터베이스의 테이블 중 하나는 거의 항상 여러 결과를 반환합니다. 여기에는 여러 제품에 사용되는 여러 유형의 재료가 나열되어 있으므로 각 고객마다 분명히 하나의 이름, 주소, 도시 등이 있지만 각각 적어도 하나의 제품이 있고 그 제품에는 적어도 하나의 재료. 나는 그 자체로 정보를 표시한다면, 그것은 다음과 같이 보일 것입니다 : 다른 수용 가능한 결과 일 수
Customer Name Mr. Customer
Customer Address 980 Whatever St.
Customer City Tallahassee
Widget Steel Thick
Widget Wood Oak
Widget Paper Bond
Whatsit Steel Thin
Whatsit Wood Birch
Thingamabob Wood Oak
Thingamabob Paper Cardstock
:
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 포맷과 연결을 많이 사용하여 100 개가 넘는 필드를 지금 당장 사용하고 있습니다. 따라서 공간 낭비가 될 것입니다. 그러나 실제로 AS 문으로 필드를 선택하면 매우 간단합니다. 원하는 이름을 사용하고 몇 개의 LEFT JOIN을 사용하여 몇 가지 쿼리없이 필요한 데이터를 가져옵니다.
fldMachineID
fldProductType
fldSteel
fldWood
fldPaper
그래서 분명히, 각 고객이 항목의 수, 각 다른 fldProductType 값 하나를 가지고 : 제품/재료 테이블의 스키마는이 같은 것입니다. 내가 무엇이든 남겨두면 추가 할 수 있습니다. 모두의 시간과 도움에 감사드립니다!
어떤 데이터베이스를 사용하고 있으며 그 값이 어떻게 반환 될 것으로 예상합니까? –
나는 이해하고 있는지 잘 모르겠다. 그것이 그대로, 당신이해야 할 일은 LEFT JOIN을 추가하는 것입니다. 그러나 귀하의 질문에서 LEFT JOINS에 대해 알고있는 것은 명백합니다. 따라서 '단순'할 수는 없습니다. 그 말은 '이해할 수 있을지 모르겠다'라는 말로 되돌아 간다. 아마도 예상되는 결과를 추가하면 문제가 해결 될 것입니다. –
SQL Server 2005를 사용하고 있습니다. 원하는 결과를 더 잘 반영 할 수 있도록 원래 질문을 편집했습니다. 지금까지 내가 한 결과, LEFT JOIN을 추가하면 fldProductType의 각 결과에 대해 하나씩 여러 세트의 결과를 얻을 수 있지만 DataGrid의 컨텍스트에서는 실제로 하나의 열만 있으면된다는 것을 알 수 있습니다. 데이터 유형 이름의 두 번째 열과 결과의 두 번째 열. –