ربط الجداول في MySql
المقصود بربط الجداول هو الحصول على نتائج من جدول معين او اكثر
يشترط في الوصول لهذه النتائج معلومات في جدول ثاني او عدة جداول
وهنا سوف نتحدث عن انواع الربط بين الجداول مع امثلة .
يشترط في الوصول لهذه النتائج معلومات في جدول ثاني او عدة جداول
وهنا سوف نتحدث عن انواع الربط بين الجداول مع امثلة .
التعريف بالدوال :
الاتصال بقاعدة البينات
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 وتصبح هذه الجداول بهذا الشكل :
الكلمة الاساسية لعملية الربط هي 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
لاحظ ان السجل moderateID
موجود في الجميع الان نريد ان نستخرج بريد المشرف على القسم
بمعرفت رقم القسم catID نعطيها القيمة واحد
مثال
انسخ هذا الكود وضعه في ملف بمتداد php وغير اسم قاعدة البينات
dbname
<?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
الان نريد ان نستخرج اسم المراقب واسم القسم وبريد المراقب
بهذا الاستعلام :
اذا كانت النتيجة صحيحة
قم بتغيير رقم القسم catID من 1 الا 2
وحدث الصفحة
النتيجة rafia_(at)_arab-portal.info
الان نريد ان نستخرج اسم المراقب واسم القسم وبريد المراقب
بهذا الاستعلام :
<?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'