آرٽيڪل ڊاريڪٽري
MySQL ڊيٽابيساندروني جوائن ملٽي ٽيبل استعمال؟ کاٻي کاٻي شامل استعمال جي ڪارڪردگي
Mysql ڪنيڪشن جو استعمال
پوئين بابن ۾، اسان سکيو آهي ته هڪ جدول مان ڊيٽا ڪيئن پڙهجي، جيڪا نسبتاً سادو آهي، پر حقيقي ايپليڪيشنن ۾ اهو ضروري هوندو آهي ته ڪيترن ئي ڊيٽا جدولن مان ڊيٽا کي پڙهجي.
هن باب ۾ اسين توهان کي ڏيکارينداسين ته ڪيئن استعمال ڪجي MySQL جي JOIN کي ٻن يا وڌيڪ جدولن ۾ ڊيٽا پڇڻ لاءِ.
توهان استعمال ڪري سگهو ٿا Mysql جي JOIN ۾ SELECT، UPDATE ۽ DELETE بيانن ۾ ملٽي ٽيبل سوالن ۾ شامل ٿيڻ لاءِ.
JOIN ان جي ڪم جي مطابق تقريبن ھيٺين ٽن ڀاڱن ۾ ورهايل آھي:
- اندروني شموليت (اندر شامل ٿيڻ، يا هڪجهڙائي): ٻن جدولن ۾ ملندڙ فيلڊن سان رڪارڊ حاصل ڪريو.
- کاٻي جوائن (کاٻي جوائن):کاٻي جدول ۾ سڀ رڪارڊ حاصل ڪريو، جيتوڻيڪ ساڄي ٽيبل ۾ ڪو به ملندڙ رڪارڊ نه آھي.
- ساڄي شموليت (ساڄي شامل ٿيڻ): LEFT JOIN جي برعڪس، اهو استعمال ڪيو ويندو آهي سڀني رڪارڊس کي ساڄي جدول ۾ حاصل ڪرڻ لاءِ، توڙي جو کاٻي ٽيبل ۾ ڪو به ملندڙ ملندڙ رڪارڊ نه هجي.
ڪمانڊ پرامپٽ ۾ اندروني شموليت استعمال ڪندي
اسان وٽ ٻه ٽيبلون آهن tcount_tbl ۽ chenweiliang_tbl chenweiliang ڊيٽابيس ۾.ٻن ڊيٽا جدولن جي ڊيٽا هن ريت آهن:
مثال
ھيٺ ڏنل مثالن جي ڪوشش ڪريو:
ٽيسٽ مثال ڊيٽا
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)
اڳيون اسان استعمال ڪنداسين MySQLINNER JOIN (توهان INNER کي به ختم ڪري سگهو ٿا ۽ JOIN استعمال ڪري سگهو ٿا، اثر ساڳيو آهي)مٿين ٻن جدولن کي ڳنڍڻ لاءِ chenweiliang_count فيلڊ جي قيمت کي پڙهڻ لاءِ tcount_tbl ٽيبل ۾ chenweiliang_tbl ٽيبل ۾ سڀني chenweiliang_author شعبن سان لاڳاپيل آهي:
انٽرويو JOIN
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 بيان جي برابر آهي:
جتي شق
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 LEFT JOIN جي ايپليڪيشن:
کاٻي حصو
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 رائٽ جوائن
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)
مٿي ڏنل مثال ۾ RIGHT JOIN استعمال ڪيو ويو آهي، هي بيان صحيح ڊيٽا ٽيبل tcount_tbl جي سڀني چونڊيل فيلڊ ڊيٽا کي پڙهي سگهندو، جيتوڻيڪ کاٻي ٽيبل ۾ chenweiliang_author فيلڊ جي قيمت سان لاڳاپيل نه آهي chenweiliang_tbl.
PHP اسڪرپٽ ۾ JOIN استعمال ڪندي
mysqli_query() فنڪشن PHP ۾ 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/ "MySQL ڊيٽابيس ۾ اندروني شموليت جو ملٽي ٽيبل استعمال؟" کاٻي کاٻي جوائن استعمال ڪارڪردگي"، اهو توهان جي مدد ڪندو.
هن آرٽيڪل جي لنڪ کي حصيداري ڪرڻ لاء ڀليڪار:https://www.chenweiliang.com/cwl-488.html
تازن تازه ڪاريون حاصل ڪرڻ لاءِ Chen Weiliang جي بلاگ جي ٽيليگرام چينل تي ڀليڪار!
📚 هي گائيڊ وڏي قيمت تي مشتمل آهي، 🌟 هي هڪ نادر موقعو آهي، ان کي نه وڃايو! ⏰⌛💨
پسند اچي ته شيئر ڪريو ۽ پسند ڪريو!
توهان جي حصيداري ۽ پسند اسان جي مسلسل حوصلا آهن!