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

أريد تعليمة SQL للمشكلة التالية:

مغلق
بدأه عبد الكريم كنعان في 29 أبريل 2007 · 6 رد · 735 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا،،

أريد تعليمة SQL للمشكلة التالية:

لدي جدول موظفين وجدول كتب وجدول المستعيرين وجدول عمليات الإعارة طبعا لقاعدة بيانات مكتبة

أريد إنشاء استعلام يرجع ما يلي:

اسم المستعير اسم الكتاب اسم الموظف المعير اسم الموظف المستلم (على سبيل المثال)

المشكلة فقط في أن اسم الموظف المعير والمستلم من نفس الجدول وليس بالضرورة أن يكون اسم الموظف المعير هو نفسه المستلم

وليكن مثلا جدول الكتب tblBook يحتوي على الحقول:

1- رقم الكتاب BookID

2- اسم الكتاب BookName

وجدول الموظفين tblEmployee:

1- رقم الموظف EmpID

2- اسم الموظف EmpName

وجدول المستعيرين tblBorrower:

1- رقم المستعير BorrowerID

2- اسم المستعير BorrowerName

وجدول عمليات الاعارة tblBorrowing:

1- رقم الاعارة BorrowingID

2- رقم الكتاب BookID

3- رقم المستعير BorrowerID

4- رقم الموظف المعير BorrowingEmpID

5- رقم الموظف المستلم RecipinetEmpID

أريد تعليمة SQL ترجع كافة القيم الموضحة أعلاه

ولكم جزيل الشكر

#2

أهلين ،

هلق المفروووض تزودنا بمحاولاتك

و تزودنا بكود بناء الجداول و بعض البايانات

هذه هي تعليمة الإختيار يلي طلبتها

خبرني

سلام

Select 
	Bw.BorowerName , 
	Bo.BookName , 
	EB.EmpName AS 'Borower Emp Name' , 
	ER.EmpName AS 'Receiver Emp Name' 
From tblBorrower Br , 
	tblBook Bo , 
	tblEmployee EB , 
	tblEmployee ER , 
	tblBorrowing B 
Where Br.BorrowerID = B.BorrowerID and Bo.BookId = B.BookId and EB.EmpId = B.BorrowingEmpId and ER.EmpId = B.RecipintEmpId
#3

مرحبا،،

لم تصلح هذه التعليمة للسبب التالي ربما يكون محتوى الحقل RecipientEmpID مساوية null وبالتالي لن يعيد الاستعلام عمليات الاعارة للكتب التي لم تستلم (تعود) للمكتبة بعد.

وشكرا جزيلاً.

#4

الظاهر مانك عرفان شي بالـ SQL

عموما هذا يلي طلبته

Canceled

أسف لا يقدم المنتدى حلول خاصة بالوظائف

الرجاء الإلتزام بالقواعد

و طرح محاولاتك

تم تعديل هذه المشاركة بواسطة Desigen في 29 أبريل 2007 في 22:04

#5

مرحبا أخي

عفوا كل يلي طلبنا تعليمة بخلت علينا :P :P

محاولتي تفضل كانت هذه:

Select [tblBorrowing].[BorrowingID]
		,[tblBorrowing].[BorrowerID]
		,[tblBorrowing].[BookID]
		,[tblBorrowing].[StartDate]
		,[tblBorrowing].[EndDate]
		,[tblBorrowing].[IsBack]
		,[tblBorrowing].[ReturnDate]
		,[tblBorrowing].[BorrowingEmpID]
		,[tblBorrowing].[Note]
		,[tblBorrowing].[RecipientEmpID]
		,[tblBorrowing].[LastUpdated]
		,[tblBorrowing].[EmpID]
		,[tblBorrower].[FirstName] As 'BorrowerFirstName'
		,[tblBorrower].[LastName] As 'BorrowerLastName'
		,[tblBook].[BookName]
		,[tblEmployee].[FullName] As BorrowingEmpName
		,[tblEmployee].[FullName] As RecipientEmpName
	 From [tblBorrowing]
	 Inner Join tblBook
	 On tblBorrowing.BookID = tblBook.BookID
	 Inner Join tblBorrower
	 On tblBorrowing.BorrowerID = tblBorrowerID
	 Inner Join tblEmployee
	 On tblBorrowing.EmpID = tblEmployee.EmpID

بس لم أعد أعلم ماذا أفعل من أجل الحصول على القيم:

		[tblEmployee].[FullName] As BorrowingEmpName,
		[tblEmployee].[FullName] As RecipientEmpName

اعرفت علي

مباشرة تطلع علينا بالعالي (طبعا أنا أمزح)

وشكرا لك أخ Desigen

وشكرا جزيلا لكم

#6

أهلين ، ما في مشاكل ،

بالنسبة للتسائل يلي طرحته عن اسم المعير و اسم المستلم نستخدم في قواعد البيانات ما يدعى بـ Alias يعني بنستخدم نفس الجدول مرتين في تعليمة Select بس بنعطيه Two Different Alias لحتى يمشي الحال

أرجوا قراء الكود يلي كتبته ، بتلاقي استخدمة نفس الجدول مرتين

هلق لحتى يرجع الإستعلام الكتب يلي ما رجعت نضع هذا الشرط بعد أخر شرط

سلام

Or B.RecipintEmpId is NULL
#7

شكرا للأخ Design الآن فهمت عليك ، طولت بالك علينا يعطيك العافية

وهذه طريقة ثانية:

Select [tblBorrowing].[BorrowingID]
		,[tblBorrowing].[BorrowerID]
		,[tblBorrowing].[BookID]
		,[tblBorrowing].[BorrowingEmpID]
		,[tblBorrowing].[RecipientEmpID]
		,(Select [tblEmployee].[EmpName] From tblEmployee Where [tblEmployee].EmpID = [tblBorrowing].[RecipientEmpID])  As 'RecipientEmpName'
		,(Select [tblEmployee].[EmpName] From tblEmployee Where [tblEmployee].EmpID =  [tblBorrowing].[BorrowingEmpID])  As 'BorrowingEmpName'
		,[tblBorrower].[BorrowerName] As 'BorrowerName'
		,[tblBook].[BookName]
	 From [tblBorrowing], tblBorrower, tblBook, tblEmployee
	 Where ((tblBorrower.BorrowerID = tblBorrowing.BorrowerID) And
		(tblBook.BookID = tblBorrowing.BookID) And
		(tblEmployee.EmpID = tblBorrowing.BorrowingEmpID) And
		((tblBorrowing.RecipientEmpID = tblEmployee.EmpID) Or (tblBorrowing.RecipientEmpID IS NULL)))

تم تعديل هذه المشاركة بواسطة عبد الكريم في 5 مايو 2007 في 18:04

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

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