MySQL ဒေတာဘေ့စ်အတွင်းပိုင်းသည် စားပွဲအများအပြားအသုံးပြုမှုတွင် ပါဝင်ပါသလား။ ဘယ်ဘက်ဘယ်ဘက် join အသုံးပြုမှုထိရောက်မှု

MySQL ဒေတာဘေ့စ်အတွင်းပါဝင်ရန် စားပွဲအစုံအသုံးပြုမှု။ ဘယ်ဘက်ဘယ်ဘက် join အသုံးပြုမှုထိရောက်မှု

mysql ချိတ်ဆက်အသုံးပြုမှု

ယခင်အခန်းများတွင် ကျွန်ုပ်တို့သည် ဇယားတစ်ခုမှ ဒေတာကို မည်သို့ဖတ်ရမည်ကို လေ့လာခဲ့ပြီးဖြစ်သည့်အတွက် အတော်လေးရိုးရှင်းသော်လည်း လက်တွေ့အသုံးချမှုများတွင် ဒေတာဇယားများစွာမှ ဒေတာများကို မကြာခဏဖတ်ရှုရန် လိုအပ်ပါသည်။

ဤအခန်းတွင် ဇယားနှစ်ခု သို့မဟုတ် ထို့ထက်ပိုသော အချက်အလက်များကို မေးမြန်းရန် MySQL ၏ JOIN ကို အသုံးပြုနည်းကို သင့်အား ပြသပါမည်။

Multi-table queries တွင်ပါဝင်ရန် သင်သည် SELECT၊ UPDATE နှင့် DELETE ထုတ်ပြန်ချက်များတွင် Mysql ၏ JOIN ကိုသုံးနိုင်သည်။

JOIN ကို ၎င်း၏လုပ်ဆောင်ချက်အရ အောက်ပါ အမျိုးအစားသုံးမျိုးဖြင့် အကြမ်းဖျင်း ခွဲခြားထားသည်။

  • INNER JOIN (အတွင်းစိတ်ပါဝင်မှု သို့မဟုတ် equijoin): ဇယားနှစ်ခုရှိ ကိုက်ညီသောအကွက်များဖြင့် မှတ်တမ်းများကို ရယူပါ။
  • LEFT JOIN (ဘယ်ဘက် ချိတ်ဆက်ရန်)ညာဘက်ဇယားတွင် ကိုက်ညီသောမှတ်တမ်းများမရှိလျှင်တောင် ဘယ်ဘက်ဇယားရှိ မှတ်တမ်းအားလုံးကို ရယူပါ။
  • RIGHT JOIN (ညာဘက် Join): LEFT JOIN နှင့် ဆန့်ကျင်ဘက်၊ ဘယ်ဘက်ဇယားရှိ သက်ဆိုင်ရာ ကိုက်ညီသော မှတ်တမ်းများ မရှိသော်လည်း ညာဘက်ဇယားရှိ မှတ်တမ်းအားလုံးကို ရယူရန် အသုံးပြုသည်။

Command Prompt တွင် INNER 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 (အတွင်းပိုင်းကို ချန်လှပ်ပြီး JOIN ကိုသုံးနိုင်သည်၊ အကျိုးသက်ရောက်မှုသည် အတူတူပင်ဖြစ်သည်)tcount_tbl ဇယားရှိ chenweiliang_tbl ဇယားရှိ chenweiliang_tbl ဇယားရှိ chenweiliang_author အကွက်များအားလုံးနှင့် သက်ဆိုင်သည့် chenweiliang_count အကွက်၏တန်ဖိုးကို ဖတ်ရန် အထက်ပါဇယားနှစ်ခုကို ချိတ်ဆက်ရန်-

Inner 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 တွင် Join ထားခဲ့သည်။

MySQL left join သည် join နှင့် မတူပါ။ 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 ကို အသုံးပြုထားသည်။ ညာဘက်ရှိ tcount_tbl ဇယားတွင် chenweiliang_author ၏ သက်ဆိုင်သည့် အကွက်တန်ဖိုးမရှိသော်လည်း၊ ဤထုတ်ပြန်ချက်သည် ဘယ်ဘက်ရှိ ဒေတာဇယား chenweiliang_tbl ၏ ရွေးချယ်ထားသော အကွက်ဒေတာအားလုံးကို ဖတ်ပါမည်။


MySQL တွင် မှန်ကန်စွာ ချိတ်ဆက်ပါ။

MySQL RIGHT JOIN သည် ညာဘက်ရှိ ဒေတာဇယားရှိ ဒေတာအားလုံးကို ဘယ်ဘက်ရှိ ဇယားတွင် သက်ဆိုင်သည့်ဒေတာမရှိလျှင်ပင် ဖတ်ပါမည်။

ဥပမာ

အောက်ပါ ဥပမာများကို စမ်းကြည့်ပါ။ chenweiliang_tbl ဘယ်ဘက်စားပွဲအတွက်၊tcount_tbl မှန်ကန်သောဇယားအတွက် MySQL RIGHT JOIN ၏လျှောက်လွှာကို နားလည်ပါ-

ညာဘက် 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 ကို အထက်ဖော်ပြပါ ဥပမာတွင် အသုံးပြုသည်၊၊ ဘယ်ဘက်ရှိ chenweiliang_tbl ဇယားရှိ chenweiliang_tbl ၏ သက်ဆိုင်ရာ အကွက်တန်ဖိုး မရှိသော်လည်း၊ ဤထုတ်ပြန်ချက်သည် ဒေတာဇယား tcount_tbl ၏ ရွေးချယ်ထားသော အကွက်ဒေတာအားလုံးကို ဖတ်ပါမည်။


PHP script တွင် JOIN ကိုအသုံးပြုခြင်း။

mysqli_query() လုပ်ဆောင်ချက်ကို SQL ထုတ်ပြန်ချက်များအား လုပ်ဆောင်ရန် PHP တွင် အသုံးပြုသည်၊၊ သင်သည် 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);
?>

မျှော်လင့်ခြင်း Chen Weiliang ဘလော့ဂ် ( https://www.chenweiliang.com/ ) shared "Multi-table use of MySQL database inner join? ဘယ်ဘက်ဘယ်ဘက် Join Usage Efficiency" က သင့်ကို ကူညီပါလိမ့်မယ်။

ဤဆောင်းပါး၏ link ကိုမျှဝေရန်ကြိုဆိုပါတယ်:https://www.chenweiliang.com/cwl-488.html

နောက်ဆုံးထွက်မွမ်းမံမှုများကို ရယူရန် Chen Weiliang ၏ တယ်လီဂရမ်ချန်နယ်မှ ကြိုဆိုပါသည်။

🔔 ချန်နယ်ထိပ်တန်းလမ်းညွှန်တွင် တန်ဖိုးရှိသော "ChatGPT အကြောင်းအရာစျေးကွက်ရှာဖွေရေး AI ကိရိယာအသုံးပြုမှုလမ်းညွှန်" ကို ပထမဆုံးရရှိသူဖြစ်လိုက်ပါ။ 🌟
📚 ဤလမ်းညွှန်တွင် တန်ဖိုးကြီးကြီးမားမားပါရှိသည်၊ 🌟ဒါက ရှားပါးအခွင့်အရေးပါ၊ လက်လွတ်မခံပါနဲ့။ ⏰⌛💨
ကြိုက်ရင် Share ပြီး Like လုပ်ပါ။
သင်၏မျှဝေခြင်းနှင့် လိုက်ခ်များသည် ကျွန်ုပ်တို့၏ စဉ်ဆက်မပြတ်လှုံ့ဆော်မှုဖြစ်သည်။

 

မှတ်ချက်များ

သင့်ရဲ့အီးမေးလ်လိပ်စာကိုထုတ်ဝေမည်မဟုတ် 用项已用用 * တံဆိပ်

အပေါ်မှလှိမ့်