د MySQL ډیټابیس داخلي د څو میز کارولو سره یوځای شي؟ کیڼ کیڼ د کارونې موثریت سره یوځای کیدل

د MySQL ډیټابیسد څو میزونو داخلي یوځای کیدل؟ کیڼ کیڼ د کارونې موثریت سره یوځای کیدل

میسقل د ارتباط کارول

په تیرو فصلونو کې، موږ زده کړل چې څنګه د یو جدول څخه ډاټا لوستل، کوم چې نسبتا ساده دی، مګر په ریښتینې غوښتنلیکونو کې ډیری وختونه د ډیری ډیټا جدولونو ډاټا لوستل اړین دي.

پدې څپرکي کې به موږ تاسو ته وښیو چې څنګه د MySQL شمولیت په دوه یا ډیرو جدولونو کې د معلوماتو پوښتنې لپاره وکاروو.

تاسو کولی شئ د څو میز پوښتنو کې د ګډون لپاره د Mysql شمولیت په SELECT، UPDATE او DELETE بیانونو کې وکاروئ.

JOIN د خپل فعالیت له مخې تقریبا په لاندې دریو کټګوریو ویشل شوی دی:

  • داخلي یوځای کیدل (داخلي یوځای کیدل، یا یوځای کول): په دوه جدولونو کې د برابرو ساحو سره ریکارډونه ترلاسه کړئ.
  • کیڼ اړخ ته یوځای کیدل (کیڼ اړخ ته یوځای کیدل):ټول ریکارډونه په کیڼ جدول کې ترلاسه کړئ، حتی که په ښي جدول کې هیڅ ډول ریکارډونه شتون نلري.
  • ښي سره یوځای کیدل (ښه یوځای کیدل): د LEFT JOIN برعکس، دا په ښي جدول کې د ټولو ریکارډونو ترلاسه کولو لپاره کارول کیږي، حتی که چیرې په چپ میز کې د ورته سمون ریکارډونه شتون ونلري.

د کمانډ پرامپټ کې د داخلي شمولیت کارول

موږ په chenweiliang ډیټابیس کې دوه جدولونه tcount_tbl او chenweiliang_tbl لرو.د دوو ډیټا جدولونو ډاټا په لاندې ډول ده:

مثال

لاندې مثالونه هڅه وکړئ:

د ازموینې مثال ډاټا

mysql> use chenweiliang;
Database changed
mysql> SELECT * FROM tcount_tbl;
+---------------+--------------+
| chenweiliang_author | chenweiliang_count |
+---------------+--------------+
| 陈沩亮博客 | 10 |
| chenweiliang.com | 20 |
| Google | 22 |
+---------------+--------------+
3 rows in set (0.01 sec)
 
mysql> SELECT * from chenweiliang_tbl;
+-----------+---------------+---------------+-----------------+
| chenweiliang_id | chenweiliang_title | chenweiliang_author | submission_date |
+-----------+---------------+---------------+-----------------+
| 1 | 学习 PHP | 陈沩亮博客 | 2017-04-12 |
| 2 | 学习 MySQL | 陈沩亮博客 | 2017-04-12 |
| 3 | 学习 Java | chenweiliang.com | 2015-05-01 |
| 4 | 学习 Python | chenweiliang.com | 2016-03-06 |
| 5 | 学习 C | FK | 2017-04-05 |
+-----------+---------------+---------------+-----------------+
5 rows in set (0.01 sec)

بیا به موږ MySQL وکارووداخلي شمولیت (تاسو کولی شئ دننه هم پریږدئ او یوځای کیدل وکاروئ، اغیز ورته دی)د دې لپاره چې پورته دوه جدولونه وصل کړئ د chenweiliang_count ساحې ارزښت لوستلو لپاره چې په tcount_tbl جدول کې د chenweiliang_tbl جدول کې د ټولو chenweiliang_author ساحو سره مطابقت لري:

دننه شامل شئ

mysql> SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a INNER JOIN tcount_tbl b ON a.chenweiliang_author = b.chenweiliang_author;
+-------------+-----------------+----------------+
| a.chenweiliang_id | a.chenweiliang_author | b.chenweiliang_count |
+-------------+-----------------+----------------+
| 1 | 陈沩亮博客 | 10 |
| 2 | 陈沩亮博客 | 10 |
| 3 | chenweiliang.com | 20 |
| 4 | chenweiliang.com | 20 |
+-------------+-----------------+----------------+
4 rows in set (0.00 sec)

پورته SQL بیان د دې سره برابر دی:

WHERE فقره

mysql> SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a, tcount_tbl b WHERE a.chenweiliang_author = b.chenweiliang_author;
+-------------+-----------------+----------------+
| a.chenweiliang_id | a.chenweiliang_author | b.chenweiliang_count |
+-------------+-----------------+----------------+
| 1 | 陈沩亮博客 | 10 |
| 2 | 陈沩亮博客 | 10 |
| 3 | chenweiliang.com | 20 |
| 4 | chenweiliang.com | 20 |
+-------------+-----------------+----------------+
4 rows in set (0.01 sec)

MySQL کیڼ اړخ ته ګډون وکړئ

د MySQL بائیں شمولیت د یوځای کیدو څخه توپیر لري. د MySQL LEFT JOIN به د کیڼ ډیټا جدول کې ټول معلومات ولولي، حتی که ښی میز هیڅ ورته ډیټا نلري.

مثال

د لاندې مثالونو هڅه وکړئ chenweiliang_tbl د کیڼ میز لپاره،tcount_tbl د سم میز لپاره، د مای ایس کیو ایل لیفټ جوین غوښتنلیک پوهه کړئ:

کیڼ اړخه ګډون

mysql> SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a LEFT JOIN tcount_tbl b ON a.chenweiliang_author = b.chenweiliang_author;
+-------------+-----------------+----------------+
| a.chenweiliang_id | a.chenweiliang_author | b.chenweiliang_count |
+-------------+-----------------+----------------+
| 1 | 陈沩亮博客 | 10 |
| 2 | 陈沩亮博客 | 10 |
| 3 | chenweiliang.com | 20 |
| 4 | chenweiliang.com | 20 |
| 5 | FK | NULL |
+-------------+-----------------+----------------+
5 rows in set (0.01 sec)

په پورتني مثال کې، LEFT JOIN کارول کیږي، او دا بیان به په چپ اړخ کې د ډیټا جدول chenweiliang_tbl ټول ټاکل شوي ساحې ډاټا ولولي، حتی که چیرې په ښي خوا کې tcount_tbl جدول کې د chenweiliang_author اړوند ساحې ارزښت شتون نلري.


د مای ایس کیو ایل حق سره یوځای شئ

د MySQL Right Join به په ښي اړخ کې د ډیټا جدول کې ټول معلومات ولولي، حتی که چیرې په ښي خوا کې جدول کې اړونده معلومات شتون نلري.

مثال

د لاندې مثالونو هڅه وکړئ chenweiliang_tbl د کیڼ میز لپاره،tcount_tbl د سم میز لپاره، د MySQL RIGHT Join په غوښتنلیک پوه شئ:

حق سره یوځای شئ

mysql> SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a RIGHT JOIN tcount_tbl b ON a.chenweiliang_author = b.chenweiliang_author;
+-------------+-----------------+----------------+
| a.chenweiliang_id | a.chenweiliang_author | b.chenweiliang_count |
+-------------+-----------------+----------------+
| 1 | 陈沩亮博客 | 10 |
| 2 | 陈沩亮博客 | 10 |
| 3 | chenweiliang.com | 20 |
| 4 | chenweiliang.com | 20 |
| NULL | NULL | 22 |
+-------------+-----------------+----------------+
5 rows in set (0.01 sec)

په پورتنۍ بېلګه کې د ښي لاس شاملول کارول شوي، دا بیان به د ښي ډیټا جدول tcount_tbl ټول ټاکل شوي ساحې ډاټا ولولي، حتی که چیرې په کیڼ جدول کې د chenweiliang_author ساحې ارزښت نه وي chenweiliang_tbl.


په پی ایچ پی سکریپټ کې د شمولیت کارول

د mysqli_query() فنکشن په پی ایچ پی کې د SQL بیانونو اجرا کولو لپاره کارول کیږي، تاسو کولی شئ ورته SQL بیان د mysqli_query() فنکشن لپاره د پیرامیټر په توګه وکاروئ.

لاندې مثال هڅه وکړئ:

د ازموینې له مخې د MySQL ترتیب:

<?
php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$dbpass = '123456'; // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
 die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
 
$sql = 'SELECT a.chenweiliang_id, a.chenweiliang_author, b.chenweiliang_count FROM chenweiliang_tbl a INNER JOIN tcount_tbl b ON a.chenweiliang_author = b.chenweiliang_author';
 
mysqli_select_db( $conn, 'chenweiliang' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
 die('无法读取数据: ' . mysqli_error($conn));
}
echo '<h2>陈沩亮博客 MySQL JOIN 测试<h2>';
echo '<table border="1"><tr><td>教程 ID</td><td>作者</td><td>登陆次数</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQL_ASSOC))
{
 echo "<tr><td> {$row['chenweiliang_id']}</td> ".
 "<td>{$row['chenweiliang_author']} </td> ".
 "<td>{$row['chenweiliang_count']} </td> ".
 "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

امید چن وییلینګ بلاګ ( https://www.chenweiliang.com/ ) شریک کړل "د مای ایس کیو ایل ډیټابیس داخلي یوځای کیدو څو میز کارول؟ بائیں کیڼ سره یوځای د کارونې وړتیا "، دا به تاسو سره مرسته وکړي.

د دې مقالې لینک شریکولو ته ښه راغلاست:https://www.chenweiliang.com/cwl-488.html

د وروستي تازه معلوماتو ترلاسه کولو لپاره د چن ویلیانګ بلاګ ټیلیګرام چینل ته ښه راغلاست!

🔔 د چینل غوره لارښود کې د ارزښتناکه "ChatGPT مینځپانګې بازار موندنې AI وسیلې کارولو لارښود" ترلاسه کولو لپاره لومړی اوسئ! 🌟
📚 دا لارښود لوی ارزښت لري، 🌟دا یو نادر فرصت دی، له لاسه مه ورکوئ! ⏰⌛💨
که مو خوښه شوه لایک او شریک کړئ!
ستاسو شریکول او خوښول زموږ دوامداره هڅونه ده!

 

评论 评论

ستاسو د بریښنالیک آدرس به نشر نشي اړین ساحې کارول کیږي * لیبل

پورته ته سکرول