MySQL דאַטאַבייס ינער פאַרבינדן מולטי-טיש באַניץ? לינקס לינקס פאַרבינדן באַניץ עפעקטיווקייַט

ווי אזוי צו ניצן אינער דזשוין מיט קייפל טישן אין א MySQL דאטאבאזע ? וואס איז די עפעקטיווקייט פון לינקס דזשוין?

Mysql נוצן פון קשר

אין די פריערדיקע קאפיטלען, מיר האָבן געלערנט ווי צו לייענען דאַטן פון איין טיש, וואָס איז לעפיערעך פּשוט, אָבער אין פאַקטיש אַפּלאַקיישאַנז עס איז אָפט נייטיק צו לייענען דאַטן פון קייפל דאַטן טישן.

אין דעם קאַפּיטל מיר וועלן ווייַזן איר ווי צו נוצן די JOIN פון MySQL צו אָנפרעג דאַטן אין צוויי אָדער מער טישן.

איר קענט נוצן די JOIN פון Mysql אין SELECT, UPDATE און DELETE סטייטמאַנץ צו פאַרבינדן מאַלטי-טיש קוויריז.

JOIN איז בעערעך צעטיילט אין די פאלגענדע דרייַ קאַטעגאָריעס לויט זיין פונקציע:

  • ינער פאַרבינדן (ינער פאַרבינדן, אָדער עקווידזשאָין): באַקומען רעקאָרדס מיט וואָס ריכטן פעלדער אין צוויי טישן.
  • LEFT JOIN (לינקס פאַרבינדן):באַקומען אַלע רעקאָרדס אין די לינקס טיש, אפילו אויב עס זענען קיין וואָס ריכטן רעקאָרדס אין די רעכט טיש.
  • RIGHT JOIN (רעכט פאַרבינדן): פאַרקערט צו LEFT JOIN, עס איז געניצט צו באַקומען אַלע רעקאָרדס אין די רעכט טיש, אפילו אויב עס זענען קיין קאָראַספּאַנדינג רעקאָרדס אין די לינקס טיש.

ניצן INNER 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)

ווייטער, וועלן מיר ניצן MySQL'ס INNER JOIN (איר קענט אויסלאזן INNER און ניצן JOIN, דער עפעקט איז דער זעלבער) צו פארבינדן די צוויי טאבעלעס פון אויבן און לייענען די ווערטן פון דעם chenweiliang_author פעלד אין דער chenweiliang_tbl טאבעלע און זייערע קארעספאנדירנדע chenweiliang_count פעלד ווערטן אין דער tcount_tbl טאבעלע:

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 ויסזאָגונג איז עקוויוואַלענט צו:

WHERE פּונקט

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 אויף די לינקס, אפילו אויב עס איז קיין קאָראַספּאַנדינג פעלד ווערט פון chenweiliang_author אין די טיש tcount_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_author אין די טיש chenweiliang_tbl אויף די לינקס.


ניצן JOIN אין PHP שריפט

די mysqli_query () פֿונקציע איז געניצט אין PHP צו ויספירן סקל סטייטמאַנץ, איר קענען נוצן די זעלבע סקל ויסזאָגונג ווי אויבן ווי אַ פּאַראַמעטער צו די mysqli_query () פֿונקציע.

פּרוּווט די פאלגענדע בייַשפּיל:

MySQL ORDER BY פּרובירן:

<?
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);
?>

האָפענטלעך וועט דער אַרטיקל "Using MySQL Database inner join across multiple tables? Efficiency of left join" וואָס איז געטיילט געוואָרן אויף טשען ווייליאַנג'ס בלאָג ( https://www.chenweiliang.com/ ) זיין נוצלעך פֿאַר אײַך.

פילט אייך פריי צו טיילן דעם לינק פון דעם ארטיקל: https://www.chenweiliang.com/cwl-488.html

כּדי צו עפֿענען מער פֿאַרבאָרגענע טריקס🔑, ברוכים הבאים זיך אָנצושליסן אין אונדזער טעלעגראַם קאַנאַל!

ייַנטיילן און ווי אויב איר ווי! דיין שאַרעס און לייקס זענען אונדזער מאָוטאַוויישאַן!

 

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

מעגילע צו Top