نتائج متعددة لحقل واحد في استعلام سكل انضم
-
23-09-2019 - |
سؤال
لست متأكدا مما إذا كان هذا ممكنا من مع استعلام سكل ، ولكن سوف تعطيه الذهاب.
أنا تطوير جزء ويب شاريبوانت في ج # الذي يتصل بقاعدة بيانات سكل ويدير استعلام ، ثم داتابيندز التي نتيجة تعيين إلى غريدفيو.انها تعمل بشكل جيد ، ولكن لدي عقبة صغيرة.بالنسبة للجزء الأكبر ، سيعود الاستعلام الخاص بي نتيجة واحدة بالضبط لكل حقل.أنا عرض المعلومات عموديا ، لذلك يبدو تقريبا مثل هذا:
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
Widget Steel Thick
Widget Wood Oak
Widget Paper Bond
Whatsit Steel Thin
Whatsit Wood Birch
Thingamabob Wood Oak
Thingamabob Paper 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);
وأود أن قائمة الاستعلام سكل بلدي ، لكنه هائل.أنا سحب في أكثر من مائة الحقول في الوقت الراهن ، مع الكثير من التنسيق سلسلة فرعية وسلسلة ، لذلك سيكون مضيعة للمساحة ، لكنه في الحقيقة استعلام بسيط إلى حد ما حيث أنا اختيار الحقول مع بيان كما للحصول على الأسماء التي أريد ، واستخدام عدد قليل من اليسار ينضم لسحب في البيانات أحتاج دون عدة استعلامات.مخطط جدول المنتج / المواد هو شيء من هذا القبيل:
fldMachineID
fldProductType
fldSteel
fldWood
fldPaper
لذلك من الواضح ، كل عميل لديه عدد من الإدخالات ، واحد لكل قيمة فلدبرودكتيب مختلفة.إذا كنت سأترك أي شيء ، يمكنني إضافته.شكرا على وقت الجميع والمساعدة!
المحلول
بشكل افتراضي لا يتم تضمين أنواع الملفات هذه في البحث SharePoint.
يمكنك إضافة أنواع الملفات الخاصة بك عن طريق الذهاب إلى الإدارة المركزية و:
إدارة تطبيقات الخدمة=> تطبيق خدمة البحث=> أنواع الملفات
نصائح أخرى
"التقليب" مجموعة البيانات يمكن القيام به في سكل ، على سبيل المثال انظر h@@p://stackoverflow.com/questions/2344590/how-do-i-transform-rows-into-columns-in-sql-server-2005 لكنني أوافق على أنه في كثير من الأحيان يكون من الأسهل القيام بذلك في ج#
ما هو كم المقترح تم توسيعه في هذه المقالة: http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/