MySQL ഡാറ്റാബേസ് ഇൻറർ ജോയിൻ മൾട്ടി-ടേബിൾ ഉപയോഗം? ഇടത് ഇടത് ചേരൽ ഉപയോഗ കാര്യക്ഷമത

MySQL ഡാറ്റാബേസ്ഇന്റർ ജോയിൻ മൾട്ടി-ടേബിൾ ഉപയോഗം? ഇടത് ഇടത് ചേരൽ ഉപയോഗ കാര്യക്ഷമത

മൈസ്ക്ൽ കണക്ഷന്റെ ഉപയോഗം

മുൻ അധ്യായങ്ങളിൽ, ഒരു ടേബിളിൽ നിന്ന് ഡാറ്റ എങ്ങനെ വായിക്കാമെന്ന് ഞങ്ങൾ പഠിച്ചു, അത് താരതമ്യേന ലളിതമാണ്, എന്നാൽ യഥാർത്ഥ ആപ്ലിക്കേഷനുകളിൽ ഒന്നിലധികം ഡാറ്റാ ടേബിളുകളിൽ നിന്നുള്ള ഡാറ്റ വായിക്കേണ്ടത് പലപ്പോഴും ആവശ്യമാണ്.

രണ്ടോ അതിലധികമോ പട്ടികകളിൽ ഡാറ്റ അന്വേഷിക്കുന്നതിന് MySQL-ന്റെ ജോയിൻ എങ്ങനെ ഉപയോഗിക്കാമെന്ന് ഈ അധ്യായത്തിൽ ഞങ്ങൾ കാണിച്ചുതരാം.

മൾട്ടി-ടേബിൾ അന്വേഷണങ്ങളിൽ ചേരുന്നതിന് നിങ്ങൾക്ക് SELECT, UPDATE, DELETE എന്നീ പ്രസ്താവനകളിൽ Mysql-ന്റെ JOIN ഉപയോഗിക്കാം.

ജോയിൻ അതിന്റെ പ്രവർത്തനമനുസരിച്ച് ഇനിപ്പറയുന്ന മൂന്ന് വിഭാഗങ്ങളായി തിരിച്ചിരിക്കുന്നു:

  • അകത്തെ ചേരൽ (അകത്തെ ചേരൽ അല്ലെങ്കിൽ ഇക്വിജോയിൻ): രണ്ട് പട്ടികകളിൽ പൊരുത്തപ്പെടുന്ന ഫീൽഡുകളുള്ള റെക്കോർഡുകൾ നേടുക.
  • ഇടത് ചേരുക (ഇടത് ചേരുക):വലത് ടേബിളിൽ പൊരുത്തപ്പെടുന്ന റെക്കോർഡുകൾ ഇല്ലെങ്കിൽപ്പോലും, ഇടത് പട്ടികയിൽ എല്ലാ റെക്കോർഡുകളും നേടുക.
  • വലത് ചേരുക (വലത് ചേരുക): LEFT JOIN എന്നതിന് വിരുദ്ധമായി, ഇടത് ടേബിളിൽ അനുബന്ധ രേഖകളൊന്നും ഇല്ലെങ്കിൽ പോലും, വലത് പട്ടികയിൽ എല്ലാ റെക്കോർഡുകളും ലഭിക്കാൻ ഇത് ഉപയോഗിക്കുന്നു.

കമാൻഡ് പ്രോംപ്റ്റിൽ 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 ഇടത് ചേരുക

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 ആണ് ഉപയോഗിച്ചിരിക്കുന്നത്, വലതുവശത്തുള്ള 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 ഉപയോഗിച്ചിരിക്കുന്നു, ഇടത് ടേബിളിൽ chenweiliang_author ഫീൽഡ് മൂല്യം ഇല്ലെങ്കിൽപ്പോലും, വലത് ഡാറ്റാ പട്ടിക tcount_tbl-ന്റെ തിരഞ്ഞെടുത്ത എല്ലാ ഫീൽഡ് ഡാറ്റയും ഈ പ്രസ്താവന വായിക്കും.


PHP സ്ക്രിപ്റ്റിൽ 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);
?>

ഹോപ്പ് ചെൻ വെയ്‌ലിയാങ് ബ്ലോഗ് ( https://www.chenweiliang.com/ ) പങ്കിട്ടു "Multi-table usage of MySQL database inner join? ലെഫ്റ്റ് ജോയിൻ യൂസേജ് എഫിഷ്യൻസി", ഇത് നിങ്ങളെ സഹായിക്കും.

ഈ ലേഖനത്തിന്റെ ലിങ്ക് പങ്കിടാൻ സ്വാഗതം:https://www.chenweiliang.com/cwl-488.html

ഏറ്റവും പുതിയ അപ്‌ഡേറ്റുകൾ ലഭിക്കുന്നതിന് ചെൻ വെയ്‌ലിയാങ്ങിന്റെ ബ്ലോഗിന്റെ ടെലിഗ്രാം ചാനലിലേക്ക് സ്വാഗതം!

🔔 ചാനൽ ടോപ്പ് ഡയറക്‌ടറിയിൽ വിലയേറിയ "ChatGPT കണ്ടന്റ് മാർക്കറ്റിംഗ് AI ടൂൾ ഉപയോഗ ഗൈഡ്" നേടുന്ന ആദ്യത്തെയാളാകൂ! 🌟
📚 ഈ ഗൈഡിൽ വലിയ മൂല്യമുണ്ട്, 🌟 ഇതൊരു അപൂർവ അവസരമാണ്, ഇത് നഷ്‌ടപ്പെടുത്തരുത്! ⏰⌛💨
ഇഷ്ടമായാൽ ഷെയർ ചെയ്യുക, ലൈക്ക് ചെയ്യുക!
നിങ്ങളുടെ ഷെയറിംഗും ലൈക്കുകളുമാണ് ഞങ്ങളുടെ തുടർച്ചയായ പ്രചോദനം!

 

发表 评论

നിങ്ങളുടെ ഇമെയിൽ വിലാസം പ്രസിദ്ധീകരിക്കില്ല. ആവശ്യമായ ഫീൽഡുകൾ ഉപയോഗിക്കുന്നു * ലേബൽ

മുകളിലേക്ക് സ്ക്രോൾ ചെയ്യുക