الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

أرجو المساعدة بشأن جملة Group By

بدأه ananabha في 6 يونيو 2009 · 13 رد · 1,071 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

اخواني الكرام

Accordion كلكم تعلمون

انا أحاول استخدامها بحيث تستخلص البيانات من قاعدة البيانات

انا بحثت في المنتديات ووجدت فكرة جيدة لعمل هذا الموضوع

وبالفعل نجح عمل الــ Accordion

الفكرة عبارة عن عرض فئات المنتجات مثل - لاب توب وديسك توب وشاشات وغيرها

وتحت كل فئة يتم عرض المنتجات الخاصة بها وعددها

مشكلتي في جملة الــ Select

وبالتحديد في Group By

فالمشكلة هي ان الفئات تظهر بعدد المنتجات

بمعنى اذا كانت فئة اللاب توب مثلا تشتمل على 3 منتجات

فتكون النتيجة انها تعرض كالتالي

laptop category (1)

Product01

laptop category (1)

Product02

laptop category (1)

Product02

ولكني اريدها ان تعرض كالتالي

laptop Category (3)

Product01

Product02

Product03

يعني يتم استخدام group by

بشكل سليم

حاولت فيها بعدة طرق ولكني فشلت

أرجو المساعدة

المشروع كله موجود بالمرفقات

طبعا علشان يشتغل معاك المشروع المرفق بشكل سليم لابد أن تكون منزل AjaxControl Toolkit

في انتظار مساعدتكم

والله الموفق

ACC_inner_join.rar

تم تعديل هذه المشاركة بواسطة ananabha في 6 يونيو 2009 في 03:19

#3

الكود هو

SELECT COUNT(T2.ProdName) AS CountOfProducts, T1.CatName AS CatName, T2.ProdName AS ProdName FROM Table1 AS T1 INNER JOIN Table2 AS T2 ON T1.CatID = T2.CatID GROUP BY T2.ProdName,T1.CatName,T1.CatID order by T1.CatID Desc

#4
ananabha كتب:
الكود هو

SELECT COUNT(T2.ProdName) AS CountOfProducts, T1.CatName AS CatName, T2.ProdName AS ProdName FROM Table1 AS T1 INNER JOIN Table2 AS T2 ON T1.CatID = T2.CatID GROUP BY T2.ProdName,T1.CatName,T1.CatID order by T1.CatID Desc

لم تضف CatID في مجمل الحقول التي يتم اختيارها

SELECT COUNT(T2.ProdName) AS CountOfProducts, T1.CatName AS CatName, T2.ProdName AS ProdName, T1.CatID
FROM Table1 AS T1 
	INNER JOIN Table2 AS T2 
	ON T1.CatID = T2.CatID 
GROUP BY T2.ProdName,T1.CatName,T1.CatID 
order by T1.CatID Desc

إذا لم تعمل أرفق رسالة الخطأ.

#5

السلام عليكم

أدخلت CatID

في جملة الاستعلام وتظهر نفس النتيجة السابقة

laptop category (1)

Product01

laptop category (1)

Product02

laptop category (1)

Product02

ولا توجد اي رسائل خطأ

#6

فقط ابدل Group by بــ Compute by و الله اعلم

راجع الرابط التالي: /index.php?showtopic=196478

#7

ايضا لم تنفع Compute by

#8

اخواني الكرام

انا عايز حد محترف يحل لي هذه المشكلة

الله يوفقكم

لاني فعلا ً محتاح لتنفيذ هذه الفكرة

هل مثلا ً جملة Group By

لا تنفع في حالة الــ Inner Join ؟؟؟

أرجو مساعدتكم ..

#9

أولا الحل لا يكمن في جملة SQL مع أنه يمكن ذلك

تجد في المرفق الحل في صفحة Default2

ACC_inner_join.rar

ما قمت به هو وضع GridView Grv داخل Accordion وهذا ال Grv يحتوي على المنتجات الفرعية التي في Table2

أما في عنوان ال Accordion وضعت أسماء تصنيف المنتجات طبعا من جدول Table1 ولكن استدعيتها من View وفي جملة ال Select في View استخدمت Grouping و Counting

قمت بحل مشكلتك بطريقتك كما أنت أنشئتها ولكن الطريقة الأصح لهذا العمل هو عدم وجود جدولين أصلا، وإنما يكون جدول واحد فقط، وقد شرحتها مسبقا في هذا الرابط

/index.php?showtopic=194483

حينها لن تضطر إلى هذا التعقيد

1

PMI_Logo_1.jpg

مدير مشاريع محترف - PMP
محلل أنظمة معتمد
مدير فريق برمجة تطبيقات ويب .Net

======|||||=====

======@ @====
==o0o== ( ) ==o0o===
================
كل منا يحتاج إلى الإرادة حتى يستطيع أن يقوم بعمله

#10

اخي الفاضل

اشكرك جدا جدا على اهتمامك

وجاري الفحص والتجربة

وفقك الله في الدنيا والاخرة

#11

فكرة ممتازة ...

زادك الله من علمه

وجعله في موازين حسناتك

#12

أخي الفاضل ماجد

معلش لو تثاقلت عليك للمرة الاخيرة

طريقتك جميلة وشغالة

بس فيه حاجة صغيرة انا مش عارف اعملها

انا عايز اخلي اسم المنتج يروح على صفحة جديدة وياخذ معاه

querystring

باسمه او الــ ID بتاعه

انا ضيفت LinkButon بدل الLabel الخاص باسم المنتج

وعايز اعمل حاجة مثل دي

PostBackUrl="ShowTheProduct.aspx?Name='<%# Bind("ProdName") %>'"

بس مش راضية تظبط معايا ابدا ً ... جننتني

معلش الله يوفقك

كمل جميلك معايا

وقولي ازاي اعملها

جزاك الله خير

#13

أعتذر على تأخر الرد لانشغالي

غير صحيح أن يكون اسم المنتج هو الباراميتر لأنه في هذه الحالة ممكن أن يكون منتجين اثنين بنفس الاسم ولكن كل منتج في فئة مختلفة، ممكن في برنامجك لا يمكن أن يكون اسم المنتج متشابه تماما مع آخر بفئة أخرى، ولكن للاحتياط.

لذا يجب أن يكون الباراميتر هو ال ID ، فما عليك حينها سوى كتابة الكود التالي داخل ال GridView بدل ال Label

<asp:HyperLink ID="lnkProdName" runat="server" Text='<%# Bind("ProdName") %>' NavigateUrl='<%# "~/ShowTheProduct.aspx?Pr_ID=" & Eval("ProdID") %>'></asp:HyperLink>

PMI_Logo_1.jpg

مدير مشاريع محترف - PMP
محلل أنظمة معتمد
مدير فريق برمجة تطبيقات ويب .Net

======|||||=====

======@ @====
==o0o== ( ) ==o0o===
================
كل منا يحتاج إلى الإرادة حتى يستطيع أن يقوم بعمله

#14

ألف ألف شكر ياأخ ماجد

الله يوفقك يارب

جزاك الله كل خير

مواضيع مشابهة