MySQL database inner join multi-table usage? වම් වමට සම්බන්ධ වීමේ කාර්යක්ෂමතාව

MySQL දත්ත සමුදායඅභ්‍යන්තර සම්බන්ධක බහු වගු භාවිතය? වම් වමට සම්බන්ධ වීමේ කාර්යක්ෂමතාව

Mysql සම්බන්ධතාවය භාවිතා කිරීම

පෙර පරිච්ඡේදවලදී, අපි එක් වගුවකින් දත්ත කියවන ආකාරය ඉගෙන ගත්තෙමු, එය සාපේක්ෂව සරල ය, නමුත් සැබෑ යෙදුම්වල බොහෝ විට දත්ත වගු කිහිපයකින් දත්ත කියවීම අවශ්‍ය වේ.

වගු දෙකක හෝ වැඩි ගණනක දත්ත විමසා බැලීම සඳහා MySQL's JOIN භාවිතා කරන්නේ කෙසේදැයි මෙම පරිච්ඡේදයෙන් අපි ඔබට පෙන්වන්නෙමු.

බහු වගු විමසුම් වලට සම්බන්ධ වීමට ඔබට Mysql හි SELECT, UPDATE සහ DELETE ප්‍රකාශ භාවිතා කළ හැක.

එහි ක්‍රියාකාරීත්වය අනුව සම්බන්ධ වීම දළ වශයෙන් පහත කාණ්ඩ තුනකට බෙදා ඇත:

  • අභ්‍යන්තර එක්වීම (අභ්‍යන්තර එකතුවීම හෝ සමමුහුර්ත වීම): වගු දෙකකින් ගැලපෙන ක්ෂේත්‍ර සහිත වාර්තා ලබා ගන්න.
  • වම් එක්වීම (වමේ එකතුව):දකුණු වගුවේ ගැළපෙන වාර්තා නොමැති වුවද, වම් වගුවේ සියලුම වාර්තා ලබා ගන්න.
  • දකුණට එක්වන්න (දකුණට එක්වන්න): 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 (ඔබට 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 LEFT 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 RIGHT JOIN

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 භාවිතා කර ඇත, මෙම ප්‍රකාශය වම් වගුවේ chenweiliang_tbl අනුරූප chenweiliang_author ක්ෂේත්‍ර අගයක් නොමැති වුවද, දකුණු දත්ත වගුවේ tcount_tbl හි තෝරාගත් සියලුම ක්ෂේත්‍ර දත්ත කියවනු ඇත.


PHP ස්ක්‍රිප්ට් වල JOIN භාවිතා කිරීම

SQL ප්‍රකාශ ක්‍රියාත්මක කිරීම සඳහා PHP හි mysqli_query() ශ්‍රිතය භාවිතා කරයි, ඔබට 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);
?>

Hope Chen Weiliang බ්ලොග් ( https://www.chenweiliang.com/ ) බෙදාගත් "MySQL දත්ත සමුදායේ අභ්‍යන්තර සම්බන්ධක බහු වගු භාවිතය? වම් වමට සම්බන්ධ වීමේ කාර්යක්ෂමතාව", එය ඔබට උපකාර කරනු ඇත.

මෙම ලිපියේ සබැඳිය බෙදා ගැනීමට සාදරයෙන් පිළිගනිමු:https://www.chenweiliang.com/cwl-488.html

නවතම යාවත්කාලීන ලබා ගැනීමට Chen Weiliang ගේ බ්ලොගයේ Telegram නාලිකාව වෙත සාදරයෙන් පිළිගනිමු!

🔔 නාලිකා ඉහළ නාමාවලියෙහි වටිනා "ChatGPT අන්තර්ගත අලෙවිකරණ AI මෙවලම් භාවිත මාර්ගෝපදේශය" ලබා ගත් පළමු පුද්ගලයා වන්න! 🌟
📚 මෙම මාර්ගෝපදේශයෙහි විශාල වටිනාකමක් ඇත, 🌟මෙය දුර්ලභ අවස්ථාවක්, එය අතපසු නොකරන්න! ⏰⌛💨
ඔබ කැමති නම් Share කර Like කරන්න!
ඔබගේ බෙදාගැනීම් සහ කැමැත්ත අපගේ අඛණ්ඩ අභිප්‍රේරණයයි!

 

发表

ඔබගේ විද්‍යුත් තැපැල් ලිපිනය ප්‍රකාශයට පත් නොකෙරේ. අවශ්‍ය ක්ෂේත්‍ර භාවිතා වේ * ලේබලය

ඉහළට අනුචලනය කරන්න