مرحبا
انا عندي استعلام ما عم اعرف جاوب عليه بتمنى انكم تساعدوني فيه
عندي جدولين ... الأول للموردين والتاني للفواتير وبدي اختار أول 3 موردين الهم أكبر إجمالي
من الفواتير
وحاولت كتير بس مازبطت معي فياريت تساعدوني فيه
مرحبا
انا عندي استعلام ما عم اعرف جاوب عليه بتمنى انكم تساعدوني فيه
عندي جدولين ... الأول للموردين والتاني للفواتير وبدي اختار أول 3 موردين الهم أكبر إجمالي
من الفواتير
وحاولت كتير بس مازبطت معي فياريت تساعدوني فيه
حسب ما تخيلته ستحتاج(ين) لجدول يربط بين جدول الموردين وجدول البضائع التي يقومون بتوريدها، وربط بين جدول الأصناف وجدول الفواتير الصادرة لها، وعبر joining بين هذه الجداول يمكنك استخراج التقرير المطلوب.
حبذا لو ذكرت(ي) بنية الجداول لديك لنستطيع مساعدتك أكثر.
فكر بطريقة أخرى
أولا شكرا للرد
ثانيا بالنسبة للحقول فهي:
بالنسبة لجدول الفواتير: قيمة الفاتورة... اسم الفرع(على فرض أن هناك عدة فروع بعدة مناطق للشركة) ورقم الفاتورة وهو عبارة عن مفتاح اساسي.
بالنسبة لجدول الموردين
اسم المورد.... و رقم الموردID .... و رقم الفاتورة
السلام عليكم
جرب هذه الــ Query
SELECT TOP 3 SupplierID , SupplierName, OrderId,OrderTotal FROM Suppliers INNER JOIN Orders ON Suppliers.OrderID = Orders .OrderID ORDER BY OrderTotal DESC
وعمل الـــ Query كالتالى:
1 - استخدام الدالة top فى سيكوال سيرفر 2000 وهى ترجع عدد معين من الصفوف وهنا 3.
2- ربط جدول الموردين Suppliers مع جدول الفواتير Orders عن طريق رقم الفاتورة OrderID المخزن فى الجدولين.
3- ترتيب النتيجة عن طريق حقل اجمالى الفاتورة OrderTotal ترتيب تنازلى لعرض اعلى قيمة ثم الاقل.
Oracle Certified Associated OCA
Microsoft Certified Database Administrator MCDBA
هاك الاستعلام التالي وأي استفسار احنا حاضرين :
Declare c_MaxCursor Cursor local
for select name , sum(invoice) as Total
from Suppliers s join invoices i on i.ID=s.ID
group by s.name
order by Total desc
open c_MaxCursor
Declare @v_Name as char(15),
@v_TotInv as int,
@v_Count as int
Fetch next from c_MaxCursor into @v_Name,
@v_TotInv
select @v_Count = 1
print 'The most three Suppliers are : '
while @v_Count < 4
begin if ( @@fetch_status <> -2 )
begin print ' ' + @v_name
end
fetch next from c_MaxCursor into @v_name,
@v_TotInv
select @v_Count=@v_Count + 1
end
close c_MaxCursor
Deallocate c_MaxCursor
goوهذا أسهل بالاستفاده من الداله Top التي ذكرها الأخ Ramadan Del5 والتي لو ذكرتها لوفرت على نفسي عناء المؤشرات :
select top 3 name , sum(invoice) as Total from Suppliers s join invoices i on i.ID=s.ID group by s.name order by Total desc
شكرا لك اخي
مرحبا
شكرااااا كتير على الرد وبالفعل الاستعلامين صحيحين 100%
وفيه عندي استعلام أخير بتمنى لو تقدروا تساعدوني فيه ويلي هو:
بدي قائمة بأسماء الموردين اللذين قيمة حساباتهم أكبر من قيمة الحسابات التي لهم كمستهلكين(على فرض أنه هناك موردين هم مستهلكين بنفس الوقت)
والجداول يلي عندي مع الواصفات هي كالتالي:
جدول الموردين وجدول الفواتير الخاص فيه اللذي سبق وذكرته من قبل
جدول المستهلكين الذي يضم الواصفات التالية: رقم حساب المستهلك (طبعا يختلف عن رقم المورد), اسم الفرع(هو نفس الحقل الموجود في جدول الموردين), والقيمة(قيمة الاستهلاك أو الشراء).
جدول آخر يخص فواتير المستهلكين أيضا وهو يضم الحقول التالية: رقم حساب المستهلك, واسم المستهلك, و رقم المستهلك ID
يعني نفس جدول الموردين والفواتير التي تخصه ولكنهما جدولين للمستهلكين والفواتير التي تخصهم.
وطبعا يوجد جدولين آخرين هما جدول الفروع حيث يضم اسم الفرع ومدينته وجدول آخر يخص الزبائن موردين كانو ام مستهلكين ومعلومات شخصية عنهم كتاريخ الميلاد والمدينة....
- وكيف ممكن اكتب تابع معرف يرجع لي عدد المستهلكين والموردين يعني عدد الزبائن يلي سجلوا بالشركة كمتعاملين معها بين تاريخين معينين؟
- وبدي كمان اكتب اجرائية مخزنة لإضافة مستهلك او مورد مع حساب له (يعني زبون مع حساب له)
وشكراااا كتير مرة تانية لتعاونكم معي ومساعدتكم ايلي.
السلام عليكم
هاك الاستعلام التالي حسب فهمي لقاعدة بياناتك وفيه جدول العملاء العام customers يحوي حقل اساسي custmid له ارتباط بجدولي الموردين suppliers والمستهلكين consumers واي استفسار احنا حاضرين :
select cu.name from customers cu join suppliers su on cu.custmid = su.custmid join supinvoices sui on sui.accntno = su.accntno join consumers cn on cu.custmid = cn.custmid join consinvoices cni on cni.accntno = cn.accntno where ( sui.account > cni.account ) go
مرحبا
شكراااااااا كتير على مجهودك الرائع بس طلعتلي رسالة خطأ عم تطلعلي بجميع المحاولات يلي حاولتا للوصول لنتيجة هذا الاستعلام
Server: Msg 209, Level 16, State 1, Line 1
Ambiguous column name 'CustomerName'.
وشككت بانو يكون فيه غلط بقاعدة البيانات ورجعت أنشأتا مرة جديدة بس ما مشي الحال ودائما عم احصل على رسالة الخطا هي.
ف ممكن تساعدوني وتحكولي ليش عم تطلعلي هي الرسالة؟
هل جربتي كتابة اسم قاعدة البيانات قبل اسم الجدول في عبارة from كالتالي :
from dbname..tablename
join dbname..tablename on
.
.
.
هذا الموضوع مغلق.