كتابة عبارات SQL التي تستخدم للاستعلام فى جداول متعددة

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

كتابة عبارات SQL التي تستخدم للاستعلام فى جداول متعددة

مُساهمة من طرف أبوسجود في الأحد مايو 12, 2013 3:14 pm

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

الطريقة الاولى : أستخدام جملة SELECT

الرمز:

SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.column1 = table2.column1;

فى المثال السابق أستخدمنا جملة أستعلام بسيطة لاستخراج بيانات من جدولين table1 و table2 و استخدمنا نقطة تدوين (table1.column1) لتحديد أي جدول جاء العمود منه ...ويتم فصل الجداول بعد عبارة FROM بفواصل ...ثم حددنا الجدوال التى تحتوى على الاعمدة على التوالى و استخدمنا شرط معين وهو أن قيم العمود1 = قيم العمود 2 ......مثال :

الرمز:
 Adodc1.RecordSource = "select info.name ,v1.Holiday_Type FROM info,v1 WHERE info.id =v1.id "
 Adodc1.CommandType = adCmdText
 Adodc1.Refresh
       
      If Adodc1.Recordset.RecordCount > 0 Then
      Set DataGrid1.DataSource = Adodc1
      Else
      MsgBox "لايوجد اجزءات "
       
        End If

فى المثال السابق قمت بعمل جملة استعلام بسيطة لجلب بيانات عمودين فى جدولين مختلفين ...العمود الاول هو name و الذى يحتوى على أسماء الموظفين فى جدول info ....العمود الثانى هو Holiday_Type و الذى يحتوى على أجازات الموظفين فى جدول v1 ...ووضع شرط أن يكون رقم id للموظف فى جدول info يساوى رقم id فى جدول v1 ....

و نتيجة هذا الاستعلام سيقوم بجلب أسماء جميع الموظفين من جدول info و أجازاتهم من جدول v1 ....كما يمكنك استخدام أكثر من شرط كما فى المثال التالى :
الرمز:


SELECT table1.column1, table2.column2 FROM table1, table2 WHERE table1.column1 = table2.column1 AND table1.column2 = table2.column2;

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

الرمز:


SELECT column1, column2 FROM table1, table2 WHERE table1.column1 = table2.column1;

الطريقة الثانية : جملة select مع المعامل INNER JOIN

تلك الطريقة تقوم بجلب البيانات من جدوال مختلفة كالسابقة ولكنها تتميز عنها انك تستطيع ربط الجدولين بحلقين لهما نفس القيم مما يعطيك حرية اكبر فى الاستعلام ...مثال :

الرمز:

SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON table1.column1 = table2.column1; WHERE table1.column3 ='" & Trim(txt.Text) & "'


فلو لاحظت اننا قمنا بعملية تحديد السجلين بـ

الرمز:

SELECT table1.column1, table2.column2

ثم حددنا الجدولين المستمد منهما هذين السجلين بتكوين العلاقة بينهما بالكود التالي

الرمز:

FROM table1 INNER JOIN table2

ثم ربطنا الجدولين بحقلين الرقم على افتراض ان اسم الحقول الرقميه في الجدولين بالشكل التالي :

الرمز:

ON table1.column1 = table2.column1


ثم وضعنا شرط البحث بحقل من الجدول test1 بناءً على القيمة الموجودة بداخل التيكست

الرمز:

WHERE table1.column3 ='" & Trim(txt.Text) & "'


و النتيجة من هذا الاستعلام سيقوم بجلب بيانات الحقل column1 فى جدول table1 مع بيانات حقل
column1 من جدول table1

أبوسجود
.....
.....

تاريخ التسجيل : 18/02/2011
المساهمات : 87
النقاط : 162
التقيم : 7
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كتابة عبارات SQL التي تستخدم للاستعلام فى جداول متعددة

مُساهمة من طرف tryold في الأربعاء مايو 15, 2013 6:45 pm

السلام عليكم



اخي ابو سجود لي الشرف ان اكون اول من يرد على موضوعك



سؤال



هل الجداول في قاعدة البيانات لازم تعمل لها علاقات اذا عملنا كود لربطها مع بعضها البعض اذا استخدمنا الطريقة الثانية ؟



اريد مثال على جلب معلومات من 3 جداول وعرضها في MSFlexGrid1 بدل الداتا قريد وتحت رقم الموظف والتعديل والاضافة والحذف كله من خلال الحقول التي امامي



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



وفقك الله ونفع بعلمك

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ


ليس من اخترق جهاز اصبح هكر

وليس من كتب كود اصبح مبرمج

وليس من كسر برنامج صار خيبير كسر

ولكن من تواضع لله رفعة


tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 45
التقيم : 0
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كتابة عبارات SQL التي تستخدم للاستعلام فى جداول متعددة

مُساهمة من طرف أبوسجود في الخميس مايو 16, 2013 11:20 am



اخي ابو سجود لي الشرف ان اكون اول من يرد على موضوعك

اهلا وسهلا بك أخى الكريم ...بل يشرفنى انك مرورك على المشاركة


الرمز:
هل الجداول في قاعدة البيانات لازم تعمل لها علاقات اذا عملنا كود لربطها مع بعضها البعض اذا استخدمنا الطريقة الثانية ؟

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



الرمز:


اريد مثال على جلب معلومات من 3 جداول وعرضها في MSFlexGrid1 بدل
الداتا قريد وتحت رقم الموظف والتعديل والاضافة والحذف كله من خلال الحقول
التي امامي


مثال : على أفتراض أن الثلاث جدوال هم info , v1 ,v2 ....ونريد جلب الحقل name من الجدول inof وVkind من الجدول v1 وحقل Vkind من الجدول v2 اذن المثال سيكون على النحو التالى :

الرمز:
Dim c As Integer
Dim flxgd_row As Integer
Dim field_wid As Integer

Dim sql As String
Dim rs As New ADODB.Recordset

sql = "select V1.Vkind, V2.Vkind, [info.name] from v1 , v2, info "
rs.Open sql, B, adOpenKeyset, adLockOptimistic


    MSFlexGrid1.Rows = 2
    MSFlexGrid1.FixedRows = 1
    MSFlexGrid1.FixedCols = 0

   
    MSFlexGrid1.Rows = 1
    MSFlexGrid1.Cols = rs.Fields.Count
    ReDim col_wid(0 To rs.Fields.Count - 1)

    For c = 0 To (rs.Fields.Count - 1)
              MSFlexGrid1.TextMatrix(0, c) = rs.Fields(c).Name
              col_wid(c) = TextWidth(rs.Fields(c).Name)
    Next c

   
    flxgd_row = 1

    Do While Not rs.EOF
          MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1

          For c = 0 To (rs.Fields.Count - 1)

              MSFlexGrid1.TextMatrix(flxgd_row, c) = _
              Format(rs.Fields(c).Value, ".      ")

             
              field_wid = TextWidth(rs.Fields(c).Value)
              If col_wid(c) < field_wid Then col_wid(c) = field_wid

          Next c

          rs.MoveNext
          flxgd_row = flxgd_row + 1

    Loop

أبوسجود
.....
.....

تاريخ التسجيل : 18/02/2011
المساهمات : 87
النقاط : 162
التقيم : 7
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كتابة عبارات SQL التي تستخدم للاستعلام فى جداول متعددة

مُساهمة من طرف أبوسجود في الخميس مايو 16, 2013 11:22 am

طبعا الكود السابق فقط لملىء FlexGrid بنتيجة البحث ....اما كيفية الحذف و التعديل والاضافة من خلال الاداة FlexGrid ...سأحاول ابعت لك كود فيما بعد

أبوسجود
.....
.....

تاريخ التسجيل : 18/02/2011
المساهمات : 87
النقاط : 162
التقيم : 7
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كتابة عبارات SQL التي تستخدم للاستعلام فى جداول متعددة

مُساهمة من طرف tryold في الخميس مايو 16, 2013 12:56 pm

اهلا اخوي ابو سجود ويعطيك العافية



طيب اذا وضعت اكثر من جدول في sql ماذا يحدث



جرب تضيف ثلاث جداول بحقولهم على الجدولين السابقين وشوف ما يحدث ؟



وهل اذا عملت جدول اخرى واردت ان اضمه معهم لازم اعمل له حقل بأسم name



الا يكفي حقل التعريف حقة اللي هو ID



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



انتظر ردك



اخوك ابو فارس

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ


ليس من اخترق جهاز اصبح هكر

وليس من كتب كود اصبح مبرمج

وليس من كسر برنامج صار خيبير كسر

ولكن من تواضع لله رفعة


tryold
...
...

تاريخ التسجيل : 06/04/2013
المساهمات : 37
النقاط : 45
التقيم : 0
الدولة : السعودية
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كتابة عبارات SQL التي تستخدم للاستعلام فى جداول متعددة

مُساهمة من طرف أبوسجود في الإثنين مايو 20, 2013 8:13 am

tryold كتب:اهلا اخوي ابو سجود ويعطيك العافية


اخوك ابو فارس


أهلا وسهلا بيك أخى الكريم أبو فارس .....


الرمز:

طيب اذا وضعت اكثر من جدول في sql  ماذا يحدث

 

جرب تضيف ثلاث جداول بحقولهم على الجدولين السابقين  وشوف ما يحدث ؟


المثال
الذى قد ارستله اليك فيه استعلام من ثلاث جدوال وهم v1 , v2, info
.....وكما اننى قد قرأت ان هناك بعض قواعد البيانات التى تحدد عدد الجدوال
التى يمكن استخدامها فى الاستعلام ولا اعرف صراحة ما هو عدد الجدوال فى
قاعدة بيانات اكسس التى يمنك استخدامها فى استعلام


الرمز:
وهل اذا عملت جدول اخرى واردت ان اضمه معهم لازم اعمل له حقل بأسم name 

 
الا يكفي حقل التعريف حقة اللي هو ID

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


الرمز:

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

 

انتظر ردك

 

بارك الله فيك يا ابو فارس ...دا أنا اللى استفدت من المناقشة معك .....و أرجوا المعذرة فى غيابى كل تلك الفترة

أبوسجود
.....
.....

تاريخ التسجيل : 18/02/2011
المساهمات : 87
النقاط : 162
التقيم : 7
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كتابة عبارات SQL التي تستخدم للاستعلام فى جداول متعددة

مُساهمة من طرف torky1985 في الأربعاء يونيو 05, 2013 9:12 pm

انا بصراحه بشكرك ع المجهود لكن انا اختلط عليا الامر شويه انا مبتداء وبتعامل بطريقة الربط العاديه للاكسسيس بعد تحويله الى 79
وبربطه باداه data1
مش بتسخدم الADO للاسف
وانا ارفت مثالى ومحتاج فيه هو عرض بانات جدولين فى اداة داتا جريد واحده بس
وعند البحث عن اسم تاتى النتائج من جدولين داخل اداه داتا جريد واحده
مش عارف ده ينفع ولا لاء ياريت تساعدنى من داخل المثال الى ارفقته وإاليك ولك جزيل الشكر
ولأحمد متاع صاحب الفضل الكبير لى
http://zakyshny.eu5.org/kleeja/uploads/egy-tech13704667821.rar

torky1985
.....
.....

تاريخ التسجيل : 25/05/2013
المساهمات : 81
النقاط : 114
التقيم : 1
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كتابة عبارات SQL التي تستخدم للاستعلام فى جداول متعددة

مُساهمة من طرف NEXT في الجمعة ديسمبر 18, 2015 9:10 am

للرفع

NEXT
الادارة
الادارة

تاريخ التسجيل : 18/02/2011
المساهمات : 262
النقاط : 378
التقيم : 10
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: كتابة عبارات SQL التي تستخدم للاستعلام فى جداول متعددة

مُساهمة من طرف torky1985 في السبت ديسمبر 19, 2015 9:56 am

دى جمله select ...وانا محتاج جمله update
محتاج اعمل تعديل ف الجدول الاول والجدول الثانى بنفس الوقت

torky1985
.....
.....

تاريخ التسجيل : 25/05/2013
المساهمات : 81
النقاط : 114
التقيم : 1
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى