الثلاثاء، 25 سبتمبر 2012

شرح ربط الجدوال في MYSQL

من طرف Mohammed Al-kenani  |  نشر في :  9:02 ص 0 تعليقات



ربط الجداول في 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 وتصبح هذه الجداول بهذا الشكل :

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
$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
$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'

ربط الجداول في 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 وتصبح هذه الجداول بهذا الشكل

كود

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 وستخدمنا السجل الموجود في الجدولين
وبعد ذلك ادخلنا رقم القسم
المصدر

التسميات :
Mohammed Al-kenani

كاتب مختص في مدونة مفكر التقنية

اشتراك

الحصول على كل المشاركات لدينا مباشرة في صندوق البريد الإلكتروني

شارك الموضوع

مواضيع ذات صلة

0 التعليقات:

back to top