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

استفسار حول استعلام باستخدام Sql Server 2000

مغلق
بدأه مبرمجة بأول الطريق في 11 فبراير 2008 · 10 رد · 1,399 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا

انا عندي استعلام ما عم اعرف جاوب عليه بتمنى انكم تساعدوني فيه

عندي جدولين ... الأول للموردين والتاني للفواتير وبدي اختار أول 3 موردين الهم أكبر إجمالي

من الفواتير

وحاولت كتير بس مازبطت معي فياريت تساعدوني فيه

#2

السلام عليكم

..

ماهي اسماء حقول كل جدول ..؟؟!

..

moslimbag8.gif

------

saaid.jpg

#3

حسب ما تخيلته ستحتاج(ين) لجدول يربط بين جدول الموردين وجدول البضائع التي يقومون بتوريدها، وربط بين جدول الأصناف وجدول الفواتير الصادرة لها، وعبر joining بين هذه الجداول يمكنك استخراج التقرير المطلوب.

حبذا لو ذكرت(ي) بنية الجداول لديك لنستطيع مساعدتك أكثر.

فكر بطريقة أخرى

#4

أولا شكرا للرد

ثانيا بالنسبة للحقول فهي:

بالنسبة لجدول الفواتير: قيمة الفاتورة... اسم الفرع(على فرض أن هناك عدة فروع بعدة مناطق للشركة) ورقم الفاتورة وهو عبارة عن مفتاح اساسي.

بالنسبة لجدول الموردين

اسم المورد.... و رقم الموردID .... و رقم الفاتورة

#5

السلام عليكم

جرب هذه الــ 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

#6

هاك الاستعلام التالي وأي استفسار احنا حاضرين :

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

الذهب الخالص

#7

وهذا أسهل بالاستفاده من الداله 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

شكرا لك اخي

الذهب الخالص

#8

مرحبا

شكرااااا كتير على الرد وبالفعل الاستعلامين صحيحين 100%

وفيه عندي استعلام أخير بتمنى لو تقدروا تساعدوني فيه ويلي هو:

بدي قائمة بأسماء الموردين اللذين قيمة حساباتهم أكبر من قيمة الحسابات التي لهم كمستهلكين(على فرض أنه هناك موردين هم مستهلكين بنفس الوقت)

والجداول يلي عندي مع الواصفات هي كالتالي:

جدول الموردين وجدول الفواتير الخاص فيه اللذي سبق وذكرته من قبل

جدول المستهلكين الذي يضم الواصفات التالية: رقم حساب المستهلك (طبعا يختلف عن رقم المورد), اسم الفرع(هو نفس الحقل الموجود في جدول الموردين), والقيمة(قيمة الاستهلاك أو الشراء).

جدول آخر يخص فواتير المستهلكين أيضا وهو يضم الحقول التالية: رقم حساب المستهلك, واسم المستهلك, و رقم المستهلك ID

يعني نفس جدول الموردين والفواتير التي تخصه ولكنهما جدولين للمستهلكين والفواتير التي تخصهم.

وطبعا يوجد جدولين آخرين هما جدول الفروع حيث يضم اسم الفرع ومدينته وجدول آخر يخص الزبائن موردين كانو ام مستهلكين ومعلومات شخصية عنهم كتاريخ الميلاد والمدينة....

- وكيف ممكن اكتب تابع معرف يرجع لي عدد المستهلكين والموردين يعني عدد الزبائن يلي سجلوا بالشركة كمتعاملين معها بين تاريخين معينين؟

- وبدي كمان اكتب اجرائية مخزنة لإضافة مستهلك او مورد مع حساب له (يعني زبون مع حساب له)

وشكراااا كتير مرة تانية لتعاونكم معي ومساعدتكم ايلي.

#9

السلام عليكم

هاك الاستعلام التالي حسب فهمي لقاعدة بياناتك وفيه جدول العملاء العام 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

الذهب الخالص

#10

مرحبا

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

Server: Msg 209, Level 16, State 1, Line 1

Ambiguous column name 'CustomerName'.

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

ف ممكن تساعدوني وتحكولي ليش عم تطلعلي هي الرسالة؟

#11

هل جربتي كتابة اسم قاعدة البيانات قبل اسم الجدول في عبارة from كالتالي :

from dbname..tablename

join dbname..tablename on

.

.

.

الذهب الخالص

هذا الموضوع مغلق.

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