(16-10-22, 06:35 PM)Taha Okla كتب :(16-10-22, 12:56 PM)maxruined كتب :(16-10-22, 12:16 PM)Meen2 كتب :إقتباس :تستخدم العبارة DISTINCT للحصول على قيمٍ فريدةٍ غير مكررة، وغالبًا ما تستخدم في استعلام SELECT للحصول على سجلات لا تتكرر القيم فيما بينها، إذ يصبح الاستعلام بالشكل الآتي:
حقيقي اخوي شكراً جداً علي مساعدتك
ولكن سؤال اخير انا المفروض معنديش اي قيم متطابقه علشان استخدم هذا الامر ولكن الحقيقه هو اشتغل تمام ولكن مش فاهم ليه ؟؟ !!فين السجلات المتطابقه اصلا عندي !!!؟؟؟حقيقي مش فاهم كويس ايه اللي بيحصل
القيم غير موجودة أساساً كما تفضلت - ولكن عند الربط بينها سيقوم كود الـ SQL على تكرار تلك القيم (إعتماداً على مطابقات رياضية كنوع يشبه التراتيب والتوافيق) لكي لا يصبح في الجدول الجديد حقول من الجدول الأول لا يطابقها حقول من الجدول الثاني (وهذا هو سبب الخطأ الذي حدث معك في نواتج عملية الجمع).
ومع ذلك حتى الكود الذي طرحه الأخ (Meen2) ليس بالكود القياسي حتى الآن (من وجهة نظري- ربما غير له وجهة نظر أخرى) فـ بالرغم من تطابق الحلول حالياً لكن أظن أنه سينشأ عن ذلك أخطاء في المستقبل لسبب أجهله.
أظن أن الحل هو : أن يتم عمل جدول (جدول إفتراضي عن طريق الكود) جديد ناتج عن الجدول الأول بواسطة الوظيفة (Group By) ليمنع تكرر القيم بل ليجمعها للحقل (Product_S_N) أي (جدول جديد عن كل جدول من الجدولين السابقين ).
ومن هاذين الجدولين الجديدين يقوم بتطبيق خاصية (INNER JOIN) مع خاصية الجمع للحقيلن المطلوبين فتحصل على الهدف،،
كنت أود أن أقدم هذا الحل، لكن للأسف ليس على أي جهاز من أجهزتي، برنامج الـ SQL ولا أرغب بتنزيله حالياً..
وصعب علي التخيل بدون تجريب (فلست بالمحترف أو المتخصص في هذا المجال، ولكن يبقى عندي حدس يرشدني للحل الأصح والأسلم).
أما سبب عدم تعاملي مع قواعد الـ SQL : (من وجهة نظري) لا أظن أن هناك داعي له ما دام قواعد الـ Ms.Access تفي بالغرض لكل البرامج التي أتعامل بها حتى الآن، فهي تعطيني أكثر مما أطلبه منها وزيادة على بساطة الاستخدام و والاتصال والوصول والآمان الغير موجود في الـ قواعد الـ SQL.، قواعد الـ MS.Access عن تجربة تستوعب بيانات حتى 2G بدون مشاكل وسريعة الاستجابة. وكـ برامج حسابية أتعامل بها لا تستلزم أصلاً ربع هذا الحجم فلما أعقد برامجي وأثقل أجهزتي ببرامج لا داعي لها..
قواعد الـ SQL تبدو الضرورة لها في برامج الأرشيف كـ برامج العلاقات العامة والمواقع المنتديات وليس برامج الحسابات(في الشبكات الداخلية).
شكراً جدا اخوي طه علي المعلومات القيمه وعلي مساعدتك حقيقي استفدنا منك كتير
بارك الله فيك
(17-10-22, 10:37 AM)Meen2 كتب : ما شاء الله أستاذ طه
(16-10-22, 06:35 PM)Taha Okla كتب : القيم غير موجودة أساساً كما تفضلت - ولكن عند الربط بينها سيقوم كود الـ SQL على تكرار تلك القيم (إعتماداً على مطابقات رياضية كنوع يشبه التراتيب والتوافيق) لكي لا يصبح في الجدول الجديد حقول من الجدول الأول لا يطابقها حقول من الجدول الثاني (وهذا هو سبب الخطأ الذي حدث معك في نواتج عملية الجمع).تحليل استفدت منه
(16-10-22, 06:35 PM)Taha Okla كتب : الكود الذي طرحه الأخ (Meen2) ليس بالكود القياسي حتى الآن (من وجهة نظري- ربما غير له وجهة نظر أخرى) فـ بالرغم من تطابق الحلول حالياً لكن أظن أنه سينشأ عن ذلك أخطاء في المستقبل لسبب أجهله.فعلا الحل الذي قدمته انا ليس بالكود القياسي لأنني كنت أسير بطريقة صاحب السؤال
(16-10-22, 06:35 PM)Taha Okla كتب : أظن أن الحل هو : أن يتم عمل جدول (جدول إفتراضي عن طريق الكود) جديد ناتج عن الجدول الأول بواسطة الوظيفة (Group By) ليمنع تكرر القيم بل ليجمعها للحقل (Product_S_N) أي (جدول جديد عن كل جدول من الجدولين السابقين ).
ومن هاذين الجدولين الجديدين يقوم بتطبيق خاصية (INNER JOIN) مع خاصية الجمع للحقيلن المطلوبين فتحصل على الهدف،،
الحل الأفضل المقدم من الأستاذ طه
أوكود :
CREATE TABLE #ReceivedTable (SN INT, Qty INT)
CREATE TABLE #OutgoingTable (SN INT, Total INT)
INSERT INTO #ReceivedTable
SELECT Product_S_N AS SN,
Quantity AS Qty
FROM TBL_Products_Received_Details
INSERT INTO #OutgoingTable
SELECT Product_S_N AS SN,
SUM(Quantity) AS Total
FROM TBL_Outgoing_Products_Details
GROUP BY Product_S_N
SELECT #ReceivedTable.SN AS 'Product SN',
#ReceivedTable.Qty AS 'Total Received',
#OutgoingTable.Total AS 'Total Outgoing'
FROM #ReceivedTable
INNER JOIN #OutgoingTable
ON #OutgoingTable.SN = #ReceivedTable.SN
كود :
CREATE TABLE #OutgoingTable (SN INT, Total INT)
INSERT INTO #OutgoingTable
SELECT Product_S_N AS SN,
SUM(Quantity) AS Total
FROM TBL_Outgoing_Products_Details
GROUP BY Product_S_N
SELECT TBL_Products_Received_Details.Product_S_N AS 'Product SN',
TBL_Products_Received_Details.Quantity AS 'Total Received',
#OutgoingTable.Total AS 'Total Outgoing'
FROM #OutgoingTable
INNER JOIN TBL_Products_Received_Details
ON TBL_Products_Received_Details.Product_S_N = #OutgoingTable.SN
![]()
شكراً جداً جداً اخوي Meen2 علي مساعدتك ليا
حقيقي انا استفدت منكم جميعاً انت واخوي طه
بارك الله فيكم
