اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

بالطبع يمكن إجراء استعلام لربط (join) ثلاثة جداول في قاعدة بيانات SQLite باستخدام لغة SQL. الفكرة الأساسية هي استخدام عملية الربط بين الجداول لدمج البيانات من جداول متعددة بناءً على علاقة مشتركة بينها، مثل مفتاح أساسي ومفتاح خارجي.

 مثال توضيحي ازاي ممكن تربط تلاتة جداول:

خلينا نفرض عندنا تلاتة جداول:
1- students (الطلاب) بأعمدة id, name 
2- courses (الدورات) بأعمدة id, course_name
3- enrollments (التسجيلات) بأعمدة student_id, course_id, grade  

وعايزين نجيب قائمة باسماء الطلاب واسماء الدورات اللي سجلوا فيها ودرجاتهم.

الاستعلام هايكون كده:

SELECT students.name, courses.course_name, enrollments.grade
FROM enrollments
JOIN students ON enrollments.student_id = students.id  
JOIN courses ON enrollments.course_id = courses.id;

في الاستعلام ده:
- بدأنا بجدول enrollments اللي بيربط بين الطلاب والدورات
- عملنا JOIN بين جدول students وجدول enrollments بشرط ان student_id في enrollments يتطابق مع id في students
- عملنا JOIN تاني بين جدول courses وجدول enrollments بشرط ان course_id في enrollments يتطابق مع id في courses  
- اخترنا الأعمدة name من جدول students، و course_name من جدول courses، و grade من جدول enrollments علشان تتعرض في النتايج

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

يمكنك الاطلاع علي المزيد عن الربط بين الجداول من هنا

 

  • 0
نشر

تعتمد الطريقة على كيفية ارتباط الجداول ببعضها البعض، فعند ربط الجداول بعلاقة "واحد إلى واحد" عليك استخدام مفتاح رئيسي مشترك لربط الجداول، أي على إفتراض الجداول كالتالي:

  • customers (مع أعمدة customer_id و name)
  • orders (مع أعمدة order_id و customer_id و order_date)
  • order_items (مع أعمدة order_item_id و order_id و product_id و quantity)

فنربط كالتالي:

SELECT c.name, o.order_date, oi.product_id, oi.quantity
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
JOIN order_items oi ON o.order_id = oi.order_id;

أما في حال ربط الجداول بعلاقة "واحد إلى عدة"، فنستخدم مفتاح رئيسي من جدول واحد كمفتاح أجنبي في جدول آخر، على إفتراض الجداول كالتالي:

  • employees (مع أعمدة employee_id و name)
  • departments (مع أعمدة department_id و name)
  • employees_departments (مع أعمدة employee_id و department_id)

نربط بينها:

SELECT e.name, d.name
FROM employees e
JOIN employees_departments ed ON e.employee_id = ed.employee_id
JOIN departments d ON ed.department_id = d.department_id;

الحالة الأخيرة ربط الجداول بعلاقة "عدة إلى عدة"، فيلزم وجود جدول وصل بين الجداول، مثلا الجداول كالتالي:

  • students (مع أعمدة student_id و name)
  • courses (مع أعمدة course_id و name)
  • student_courses (مع أعمدة student_id و course_id)

فنربط بالشكل:

SELECT s.name, c.name
FROM students s
JOIN student_courses sc ON s.student_id = sc.student_id
JOIN courses c ON sc.course_id = c.course_id;

الربط بين الجداول

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...