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

إيجاد بيانات من بيانات عشوائية

بدأه kathy في 3 يونيو 2008 · 14 رد · 1,572 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم,,,

لدي جدولين ,جدول أسماء الطلاب وجدول الدرجات أريد أن أقوم بعمل إستعلام يعيد جدول فيه أسماء الطلاب

وإستعلام يعيد جدول فيه درجات الطلاب الذين تم إختيارهم في الإستعلام الأول,

المشكلة أن الإستعلام الأول الذي يعيد أسماء الطلاب يعيد البيانات بشكل عشوائي,كيف سأعرف أرقام الطلاب

التي نتجت من الإستعلام الأول للحصول على درجاتهم في الإستعلام الثاني؟؟

أرجو أن يكون السؤال واضح

شكرا

#2

أختي العزيزه بالنسبة للاستعلام الأول بسيط و قد قمت أنتي بتطبيقه

أما الثاني قولي لي ماذا فعلت...

بما أنك بنيتي استعلام للطلاب اللذين تريديهم فيفترض أن تقومي عند بناء استعلام علامات الطلاب أن تختاري الاستعلام الأول و الذي به الطلاب اللذين تريدنهم فقط و ليس جدول الطلاب الرئيسي

تم تعديل هذه المشاركة بواسطة بشار عواد في 4 يونيو 2008 في 14:38

[وسط][/وسط]إن أجري إلا على الله

#3
اقتباس
بما أنك بنيتي استعلام للطلاب اللذين تريديهم فيفترض أن تقومي عند بناء استعلام علامات الطلاب أن تختاري الاستعلام الأول و الذي به الطلاب اللذين تريدنهم فقط و ليس جدول الطلاب الرئيسي

لم أفهم ما تعني؟؟

#4
kathy كتب:
لم أفهم ما تعني؟؟

اولاً: كيف ستقومي ببناء استعلام؟

هل هي بالطريقة المرفقة بالصورة أم من خلال الكود؟

post-60107-1212581182_thumb.jpg

[وسط][/وسط]إن أجري إلا على الله

#5

من خلال كتابة الإستعلام داخل stored procedure

#6

مممممممم...

لا علم لي

و لكن من خلال View يكون الوضع أسهل بحث تستطيعين بناء 2 Views الأول تحددين به معلومات طلاب معينين و الثاني تستخرجين به علامات الطلاب الذين تم تحديدهم بالـ View الأول

[وسط][/وسط]إن أجري إلا على الله

#7

هل من الصعوبة عمل مثل ذلك كون البيانات الناتجة من الإستعلام الأول عشوائية ,,,

#8

??????

#9

السلام عليكم

ممكن ذلك بعدة طرق ومن ضمنها الطريقة التقليدية باستخدام الجدوال المؤقتة (طبعا لان البيانات عشوائية)

select * into #tt from students

بعد ذلك نعمل استعلام الدرجات

select * from grades where stID in (select stid from #tt)

select * from #tt

#10

ممكن تعطيني فكرة عن الطرق الأخرى

#11

السلام عليكم،

الأخت العزيزة إن كنتي تستطيعين استخدام الـ View هي أفضل الطرق

ابني View و سميه Students_Info و اختاري جدول معلومات الطلاب و اختاري الأعمدة التي تريدينها من هذا الجدول و ضعي في عمود رقم الطالب في خانة Criteria جملة إما (< من أو >) أو جملة Between 10 And 200

و من ثم إبني View آخر سميه Students_Marks و اختاري جدول علامات الطلاب و الـStudent_Info الـ View الذي بنيناه سابقاً مع مراعاة ربط عمود رقم الطالب في جدول العلامات مع عمود رقم الطالب في الـ View السابق، و كلما أردت طلاب آخرين فقط عدلي الـ Criteria في الـView الأول

اقتباس
السلام عليكم

ممكن ذلك بعدة طرق ومن ضمنها الطريقة التقليدية باستخدام الجدوال المؤقتة (طبعا لان البيانات عشوائية)

select * into #tt from students

بعد ذلك نعمل استعلام الدرجات

select * from grades where stID in (select stid from #tt)

select * from #tt

الأخ الحبيب طارق مشكلة الجداول المؤقته هي:

1- تكرار بيانات في جدول آخر و زيادة حجم الداتابيز

2- عدم المقدرة بتنفيذها مرة أخرى إلا إذا حذفت الجدول و قمت بهذه العملية من جديد.

3- فقد العلاقات بين الجداول مع هذا الجدول المؤقت مما يعرضها للخطأ.

و شكراً

[وسط][/وسط]إن أجري إلا على الله

#12
اقتباس
ابني View و سميه Students_Info و اختاري جدول معلومات الطلاب و اختاري الأعمدة التي تريدينها من هذا الجدول و ضعي في عمود رقم الطالب في خانة Criteria جملة إما (< من أو >) أو جملة Between 10 And 200

و من ثم إبني View آخر سميه Students_Marks و اختاري جدول علامات الطلاب و الـStudent_Info الـ View الذي بنيناه سابقاً مع مراعاة ربط عمود رقم الطالب في جدول العلامات مع عمود رقم الطالب في الـ View السابق، و كلما أردت طلاب آخرين فقط عدلي الـ Criteria في الـView الأول

هذة العملية سوف تعيد جميع البيانات في جدول واحد وأنا أريد أن يعود الناتج في جدولين

جدول يحتوي على معلومات الطلاب العشوائية وجدول يحتوي على درجات الطلاب في الجدول العشوائي الأول

اقتباس
الأخ الحبيب طارق مشكلة الجداول المؤقته هي:

1- تكرار بيانات في جدول آخر و زيادة حجم الداتابيز

2- عدم المقدرة بتنفيذها مرة أخرى إلا إذا حذفت الجدول و قمت بهذه العملية من جديد.

3- فقد العلاقات بين الجداول مع هذا الجدول المؤقت مما يعرضها للخطأ.

كلامك صحيح لكن يمكن إستخدام متغير من نوع Table بدل من إستخدام local temporay table وسيكون أكفأ بالتأكيد

شكرا للمشاركة

#13

السلام عليكم

اقتباس
تكرار بيانات في جدول آخر و زيادة حجم الداتابيز

هو مؤقت وفور الانتهاء السيشن اي البروسجير يتم التخلص منه

2

اقتباس
- عدم المقدرة بتنفيذها مرة أخرى إلا إذا حذفت الجدول و قمت بهذه العملية من جديد.

الافضل حذفه فور الانتهاء منه وفي 2005 يمكن استخدام الجدول كمتغير او استخدام Common Table Exporessions

3

اقتباس
- فقد العلاقات بين الجداول مع هذا الجدول المؤقت مما يعرضها للخطأ.

مالنا والعلاقات فهذه العملية تتم في أقل من الثانية

#14

لكن هل إنشاء جدول مؤقت أو تعريف متغيير من نوع جدول لايؤثر على السرعة و performace لقاعدة البيانات؟؟

#15

اكيد طرح مايكروسوفت للجدول كمتغيير اعطى فوائد كثيرة عن الجدول المؤقت العادي .

لكن لا داعي للتخوف من استخدامها فمحرك SQL server يستخدمها بشكل كبير وفي عمليات كثيرة منها عند استخدام Order by في الاستعلامات

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