المقصود بربط الجداول هو الحصول على نتائج من جدول معين او اكثر
يشترط في الوصلول لهذه النتائج معلومات في جدول ثاني او عدة جداول
وهنا سوف نتحدث عن انواع الربط بين الجداول مع امثلة تطبيقية---------------------------------------------
قبل الدخول في الدرس يجب ان تكون قد تعرفت على هذة الدوال
الاتصال بقاعدة البينات
mysql_pconnect
تحديد قاعدة البينات
mysql_select_db
ارسال استعلام
mysql_query
استخراج البينات في مصفوفة
mysql_fetch_array
الدرس
الكلمة الاساسية لعملية الربط هي join الجمل المستخدمة في الربط
1) INNER JOIN
2) الفاصلة ,
3)CROSS JOIN
4 )LEFT JOIN
5 ) RIGHT JOIN
من واحد الى ثلاثة نفس الوظيفة عملية ربط كامل تاتي بين اسماء الجداول
المثال الاول
لنفرض ان لديك اقسام في البرنامج الذي تستخدمة وكل قسم يوجد له مشرف وتريد ان ترسل رسالة للمشرف عندما يضاف موضوع لهذا
القسم لابد ان يكون لدينا سجل في جدول الاقسام يحفظ فيه رقم المشرف على
القسم ولنفرض اسم السجل moderateID وتصبح هذه الجداول بهذا الشكل
كود
CREATE TABLE cat (
catID int(10) default NULL auto_increment,
catTITLE varchar(100) NOT NULL default ' ',
moderateID int(10) NOT NULL default '0',
PRIMARY KEY (catID)
) TYPE=MyISAM;
INSERT INTO cat VALUES (1, 'القسم الاول', 2);
INSERT INTO cat VALUES (2, 'القسم الثاني', 1);
INSERT INTO cat VALUES (3, 'القسم الثالث', 0);
# --------------------------------------------------------
CREATE TABLE moderate (
moderateID int(10) default NULL auto_increment,
modNAME varchar(100) NOT NULL default ' ',
modEAMAL varchar(100) NOT NULL default ' ',
PRIMARY KEY (moderateID)
) TYPE=MyISAM;
INSERT INTO moderate VALUES (1, 'rafia', 'rafia@arab-portal.info');
INSERT INTO moderate VALUES (2, 'احمد', 'ahmd@hotmail.com');
INSERT INTO moderate VALUES (3, 'علي', 'ali@hotmail.com');
انسخ الكود السابق وضعة في قاعدة بينات
لاحظ ان السجل moderateID
موجود في الجميع الان نريد ان نستخرج بريد المشرف على القسم
بمعرفت رقم القسم catID نعطيها القيمة واحد
مثال
انسخ هذا الكود وضعه في ملف بمتداد php وغير اسم قاعدة البينات
dbname
PHP
<?php
$catID = 1;$link = @mysql_pconnect("localhost", "", "");
mysql_select_db("dbname",$link); $result = mysql_query("select moderate.modEAMAL
from moderate, cat
where cat.moderateID = moderate.moderateID
and cat.catID='$catID'");$row = mysql_fetch_array($result);$email = $row['modEAMAL'];
print "$email";?>
النتيجة ahmd_(at)_hotmail.com
اذا كانت النتيجة صحيحة
قم بتغيير رقم القسم catID من 1 الا 2
وحدث الصفحة
النتيجة rafia_(at)_arab-portal.info
الان نريد ان نستخرج اسم المراقب واسم القسم وبريد المراقب
بهذا الاستعلام
PHP
<?php
$catID = 1;$link = @mysql_pconnect("localhost", "", "");mysql_select_db("dbname",$link);$result = mysql_query("select moderate.modEAMAL,
moderate.modNAME ,
cat.catTITLE
from moderate, cat
where cat.moderateID = moderate.moderateID
and cat.catID='$catID'");$row = mysql_fetch_array($result);
print $row['modEAMAL'];
print "<br>";
print $row['modNAME'];
print "<br>";
print $row['catTITLE'];?>
تعال نفصل الاستعلام لوحدة
كود
select moderate.modEAMAL, moderate.modNAME , cat.catTITLE
from moderate, cat
where cat.moderateID = moderate.moderateID
and cat.catID='$catID'
في البداية قمنا بتحديد السجلات التي نريد قيمها بستخدام select
ثلاث سجلات بين كل واحد منها فاصلة تعني الاتباع
بعد ذلك اخترنا الجداول بواسطة from
ذكرنا الاول ثم الثاني والفاصلة هي الرابط مثل CROSS JOIN او INNER JOIN
ثم وضعنا شرط الربط بستخدام الكلمة where وستخدمنا السجل الموجود في الجدولين
وبعد ذلك ادخلنا رقم القسم