MySQL डाटाबेस भित्री सामेल बहु-तालिका उपयोग? बायाँ बायाँ सम्मिलित उपयोग दक्षता

MySQL डाटाबेसभित्री सामेल बहु-तालिका उपयोग? बायाँ बायाँ सम्मिलित उपयोग दक्षता

Mysql जडानको प्रयोग

अघिल्लो अध्यायहरूमा, हामीले एक तालिकाबाट डेटा कसरी पढ्ने भनेर सिकेका छौं, जुन तुलनात्मक रूपमा सरल छ, तर वास्तविक अनुप्रयोगहरूमा यो प्रायः धेरै डेटा तालिकाहरूबाट डेटा पढ्न आवश्यक हुन्छ।

यस अध्यायमा हामी तपाईंलाई MySQL को JOIN कसरी प्रयोग गर्ने भनेर देखाउनेछौं दुई वा बढी तालिकाहरूमा डाटा क्वेरी गर्न।

तपाईं बहु-तालिका प्रश्नहरूमा सामेल हुन SELECT, UPDATE र DELETE कथनहरूमा Mysql को JOIN प्रयोग गर्न सक्नुहुन्छ।

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 प्रयोग गर्नेछौंINNER JOIN (तपाईले INNER लाई पनि छोडेर JOIN प्रयोग गर्न सक्नुहुन्छ, प्रभाव उस्तै छ)tcount_tbl तालिकाको chenweiliang_tbl तालिकामा सबै chenweiliang_author क्षेत्रहरूसँग सम्बन्धित chenweiliang_count फिल्डको मान पढ्न माथिको दुईवटा तालिकाहरू जडान गर्नुहोस्:

इन्टरनेट जोड्नुहोस्

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 लेफ्ट Join

MySQL लेफ्ट जोइन जोडिने भन्दा फरक छ। MySQL लेफ्ट JOIN ले बायाँ डाटा तालिकामा सबै डाटा पढ्नेछ, दायाँ तालिकामा कुनै सम्बन्धित डाटा नभए पनि।

उदाहरण

निम्न उदाहरणहरू प्रयास गर्नुहोस् chenweiliang_tbl बायाँ टेबलको लागि,tcount_tbl सही तालिकाको लागि, MySQL लेफ्ट जोइनको आवेदन बुझ्नुहोस्:

बायाँ सामेल

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 प्रयोग गरिएको छ, र यो कथनले दायाँपट्टि tcount_tbl तालिकामा chenweiliang_author को कुनै सम्बन्धित फिल्ड मान नभए तापनि बाँयामा रहेको डेटा तालिका chenweiliang_tbl को सबै चयन गरिएका फिल्ड डेटाहरू पढ्नेछ।


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_tbl मा chenweiliang_author को कुनै सम्बन्धित फिल्ड मान नभए पनि।


PHP लिपिमा JOIN प्रयोग गर्दै

mysqli_query() प्रकार्य PHP मा SQL कथनहरू कार्यान्वयन गर्न प्रयोग गरिन्छ, तपाईंले mysqli_query() प्रकार्यको प्यारामिटरको रूपमा माथिको SQL कथन प्रयोग गर्न सक्नुहुन्छ।

निम्न उदाहरण प्रयास गर्नुहोस्:

परीक्षण द्वारा 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

थप लुकेका चालहरू अनलक गर्न🔑, हाम्रो टेलिग्राम च्यानलमा सामेल हुन स्वागत छ!

मन परे लाइक र सेयर गर्नुहोस ! तपाईको सेयर र लाइक हाम्रो निरन्तर प्रेरणा हो!

 

评论 评论

तपाईंको इमेल ठेगाना प्रकाशित गरिने छैन। आवाश्यक फिल्डहरू प्रयोग भएको छ * लेबल

लेख निर्देशिका
माथि स्क्रोल गर्नुहोस्