تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مساعدة في جملة إستعلام
#1
السلام عليكم

اخواني الافاضل

الرجاء المساعدة في كود استعلام كما موضح

وجدت هذه الطريقة وقمت بالتعديل عليها ولكن لم تنجح 
كود :
da = New SqlDataAdapter(
   "SELECT [ID], [Tech], SUM([Scope]) [Total]  " & _
   "FROM   ( Select * From [ERC_Scope]         " & _
   "         UNION ALL                         " & _
   "         SELECT * FROM [HUA_Scope]         " & _
   "GROUP  BY [ID], [Tech]     ", connSQLServer)


الملفات المرفقة صورة/صور
   
الرد
تم الشكر بواسطة:
#2
السلام  عليكم  

  بالامكان استخدام  هذا الكود  عسى  ان ينفعك  


كود :
SELECT dbo.tb1.id AS[كود الصنف], dbo.tb1.f2 AS [اسم الصنف], SUM(dbo.tb2.f2) AS [المجموع الاول] FROM dbo.tb1 CROSS JOIN dbo.tb2 GROUP BY dbo.tb1.id, dbo.tb1.f2
((  لا أحد يمكن له  ان يحدد متى يموت ولكن هو  من يقدر  ان يحدد  كيف يعيش بعد الموت فالحياة والمماة بيد الله  لكن  حياتك بعد الموت بيدك  فلا  تندم  على شيء فاتك في الدنيا لربما يرزقك  الله  خير  منه في  الاخرة  او لربما  دفع الله  عنك به  شيأ  اعظم  ...  تلك  هي  مشيئة الله  عز  وجل )) 
الرد
تم الشكر بواسطة:
#3
وعليكم السلام ورحمة الله وبركاته

بخصوص كود الاستعلام كل ما عليك تطبيق التالى
كود :
SELECT MIN(T1.id) AS id, T1.name, (SELECT SUM(value) AS V1 FROM table1 WHERE name = T1.name GROUP BY name) - (SELECT SUM(value) AS V2 FROM table2 WHERE name = T1.name GROUP BY name) AS value FROM table1 AS T1 INNER JOIN table2 AS T2 ON T1.name = T2.name GROUP BY T1.name

بخصوص كود الاستعلام واتمام الادخال فى table3
فى البداية سيتم حذف عمود الـ id من الاستعلام بما انه عمود ترقيم تلقائي
ويتم تطبيق الكود بالشكل التالى
كود :
INSERT INTO table3 (name, value) SELECT T1.name, (SELECT SUM(value) AS V1 FROM table1 WHERE name = T1.name GROUP BY name) - (SELECT SUM(value) AS V2 FROM table2 WHERE name = T1.name GROUP BY name) AS value FROM table1 AS T1 INNER JOIN table2 AS T2 ON T1.name = T2.name GROUP BY T1.name

المسميات طبقاً للمسميات فى الصورة الموضوع
حتى يتم تسهيلا المور عليك ومعرفة كيفية التعامل وتغيير المسميات لديك

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
#4
مشكورين على سرعة الرد والمساعدة ولكن يضهر خطاء في تنفيد الكود

للعم قاعدة بيانات اكسس


الملفات المرفقة صورة/صور
   
الرد
تم الشكر بواسطة:
#5
(01-08-18, 02:53 PM)نور الهدى الهدى كتب : مشكورين على سرعة الرد والمساعدة ولكن يضهر خطاء في تنفيد الكود

للعم قاعدة بيانات اكسس


فى البداية كيف قاعدة بيانات اكسس وانت تستخدم
كود :
SqlDataAdapter

ثانياً الصورة المرفقة تدل ان يوجد اخطاء فى المدخلات

اتمنى ارفاق مشروع مثال مصغر لما تريده ومعه قاعدة البيانات
حتى يتم كتابة الكود اللزم لما هو مرفق بدلاً
من تكرار كتابة عدة اكواد بدون اى نفع

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
#6
[quote pid='124636' dateline='1533140350']
السلام عليكم

فى هذا الكود أرى كما قال الأخ [b]elgokr [/b]أن فيه خطأ إملائي من حيث نوع قاعدة البيانات وهناك "(" ناقص في نهاية جملة select الثانية
كود :
da = New SqlDataAdapter(
   "SELECT [ID], [Tech], SUM([Scope]) [Total]  " & _
   "FROM   ( Select * From [ERC_Scope]         " & _
   "         UNION ALL                         " & _
   "         SELECT * FROM [HUA_Scope]         " & _
   "GROUP  BY [ID], [Tech]     ", connSQLServer)

حتى يصبح كالتالي:

كود :
da = New DataAdapter(
  "SELECT [ID], [Tech], SUM([Scope]) [Total]  " & _
  "FROM   ( Select * From [ERC_Scope]         " & _
  "         UNION ALL                         " & _
  "         SELECT * FROM [HUA_Scope]    )    " & _
  "GROUP  BY [ID], [Tech]     ", conn)


وتمنياتى لك التوفيق

[/quote]
الرد
#7
أنت توهتني بالنتيجة الخاطئة منك منذ البداية بهذه الصورة في ناتج 2g

والصحيح أن 2g يكون 2700

كود :
SELECT [Name], SUM([Value]) AS [Value]
FROM ( SELECT Table1.Name AS [Name],
              Table1.Value - Table2.Value AS [Value]
       FROM   [Table1]
       INNER  JOIN [Table2]
              ON Table1.ID = Table2.ID
) GROUP BY [Name]
الرد
تم الشكر بواسطة: Abou Eman , elgokr , نور الهدى الهدى
#8
(02-08-18, 02:38 AM)GameOver كتب : أنت توهتني بالنتيجة الخاطئة منك منذ البداية بهذه الصورة في ناتج 2g

والصحيح أن 2g يكون 2700

كود :
SELECT [Name], SUM([Value]) AS [Value]
FROM ( SELECT Table1.Name AS [Name],
              Table1.Value - Table2.Value AS [Value]
       FROM   [Table1]
       INNER  JOIN [Table2]
              ON Table1.ID = Table2.ID
) GROUP BY [Name]

مشكورين والكود شغال لكن هناك مشكلة عندما تكون الاضافة أكتر من الخصم لا يقوم بجمع الاضافة يعني عندما يكون ID الجدول الاول غير مطابق للجدول الثاني 
الرجاء النظر في الكود وشكرا

هذا مثال لتوضيح النتائج اكتر كما أفاد [b]elgokr[/b] 
مشكورين جميعا


الملفات المرفقة
.rar   test.rar (الحجم : 23.39 ك ب / التحميلات : 10)
الرد
تم الشكر بواسطة: elgokr
#9
(02-08-18, 05:25 PM)نور الهدى الهدى كتب : لكن هناك مشكلة عندما تكون الاضافة أكتر من الخصم لا يقوم بجمع الاضافة يعني عندما يكون ID الجدول الاول غير مطابق للجدول الثاني 
الرجاء النظر في الكود وشكرا

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

أقترح عليك إحدى طريقتين وفي كلاهما الاستغناء عن الجدول الثاني:
الاول: إضافة عمود جديد لنوع القيمة إن كانت مبلغاً أم خصماً.
الثاني: وضع قيمة الخصم بالسالب وهذا الاسهل.

تذكر أن كلا الطريقتين تستخدم جدول واحد فقط.

وبهذا تكون مسئلة التجميع سهلة وخصوصاً استخدام الطريقة الثانية.
الرد
تم الشكر بواسطة:
#10
(02-08-18, 06:03 PM)GameOver كتب :
(02-08-18, 05:25 PM)نور الهدى الهدى كتب : لكن هناك مشكلة عندما تكون الاضافة أكتر من الخصم لا يقوم بجمع الاضافة يعني عندما يكون ID الجدول الاول غير مطابق للجدول الثاني 
الرجاء النظر في الكود وشكرا

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

أقترح عليك إحدى طريقتين وفي كلاهما الاستغناء عن الجدول الثاني:
الاول: إضافة عمود جديد لنوع القيمة إن كانت مبلغاً أم خصماً.
الثاني: وضع قيمة الخصم بالسالب وهذا الاسهل.

تذكر أن كلا الطريقتين تستخدم جدول واحد فقط.

وبهذا تكون مسئلة التجميع سهلة وخصوصاً استخدام الطريقة الثانية.

اخي GameOver
 من ظروري استخدام جدول الإضافة وجدول الخصم لان احيانا احتاج كشف الاضافة وكشف الخصم 
وعند الجرد احتاج المتوفر والذي يمتل قيمة الاضافة ناقص قيمة الخصم وهذا المطلوب
الرد
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم