Direttorju tal-Artikoli
database MySQLinner join użu multi-mejda? xellug xellug jissieħbu effiċjenza fl-użu
Mysql użu ta 'konnessjoni
Fil-kapitoli preċedenti, tgħallimna kif naqraw dejta minn tabella waħda, li hija relattivament sempliċi, iżda f'applikazzjonijiet reali ħafna drabi jkun meħtieġ li taqra dejta minn tabelli ta 'dejta multipli.
F'dan il-kapitlu ser nuruk kif tuża l-JOIN tal-MySQL biex titlob dejta f'żewġ tabelli jew aktar.
Tista' tuża l-JOIN ta' Mysql f'dikjarazzjonijiet SELECT, UPDATE u DELETE biex tgħaqqad mistoqsijiet multi-tabella.
JOIN hija bejn wieħed u ieħor maqsuma fit-tliet kategoriji li ġejjin skond il-funzjoni tagħha:
- INNER JOIN (inner join, jew equijoin): Ikseb rekords b'oqsma li jaqblu f'żewġ tabelli.
- LEFT JOIN (għaqqad ix-xellug):Ikseb ir-rekords kollha fit-tabella tax-xellug, anki jekk ma jkunx hemm rekords li jaqblu fit-tabella tal-lemin.
- RIGHT JOIN (jingħaqad bil-lemin): Kuntrarjament għal LEFT JOIN, tintuża biex tikseb ir-rekords kollha fit-tabella tal-lemin, anki jekk ma jkunx hemm rekords korrispondenti li jaqblu fit-tabella tax-xellug.
Bl-użu ta 'INNER JOIN fil-Prompt tal-Kmand
Għandna żewġ tabelli tcount_tbl u chenweiliang_tbl fid-database ta 'chenweiliang.Id-dejta taż-żewġ tabelli tad-dejta hija kif ġej:
eżempju
Ipprova l-eżempji li ġejjin:
data tal-istanza tat-test
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)
Sussegwentement se nużaw MySQLINNER JOIN (tista 'wkoll tħalli barra INNER u tuża JOIN, l-effett huwa l-istess)Biex tgħaqqad iż-żewġ tabelli ta 'hawn fuq biex taqra l-valur tal-qasam chenweiliang_count li jikkorrispondi għall-oqsma kollha chenweiliang_author fit-tabella chenweiliang_tbl fit-tabella tcount_tbl:
Ġewwa ġewwa jissieħbu
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)
Id-dikjarazzjoni SQL ta' hawn fuq hija ekwivalenti għal:
FEJN klawsola
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 huwa differenti minn join. MySQL LEFT JOIN se jaqra d-dejta kollha fit-tabella tad-dejta tax-xellug, anki jekk it-tabella tal-lemin ma jkollha l-ebda dejta korrispondenti.
eżempju
Ipprova l-eżempji li ġejjin biex chenweiliang_tbl għat-tabella tax-xellug,tcount_tbl Għat-tabella t-tajba, ifhem l-applikazzjoni ta 'MySQL LEFT JOIN:
Ix-XELLUG JINGħaqDU
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)
Fl-eżempju ta 'hawn fuq, jintuża LEFT JOIN, u din id-dikjarazzjoni se taqra d-dejta kollha tal-qasam magħżula tat-tabella tad-dejta chenweiliang_tbl fuq ix-xellug, anki jekk m'hemm l-ebda valur tal-qasam korrispondenti ta' chenweiliang_author fit-tabella tcount_tbl fuq il-lemin.
MySQL DRITT JOIN
MySQL RIGHT JOIN se jaqra d-dejta kollha fit-tabella tad-dejta fuq il-lemin, anki jekk ma jkunx hemm dejta korrispondenti fit-tabella fuq ix-xellug.
eżempju
Ipprova l-eżempji li ġejjin biex chenweiliang_tbl għat-tabella tax-xellug,tcount_tbl Għat-tabella t-tajba, ifhem l-applikazzjoni ta 'MySQL RIGHT JOIN:
DRITT 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 tintuża fl-eżempju ta 'hawn fuq, din id-dikjarazzjoni se taqra d-dejta kollha tal-qasam magħżula tat-tabella tad-dejta tal-lemin tcount_tbl, anki jekk m'hemm l-ebda valur korrispondenti tal-qasam chenweiliang_author fit-tabella tax-xellug chenweiliang_tbl.
Bl-użu JOIN fl-iskrittura PHP
Il-funzjoni mysqli_query() tintuża fil-PHP biex tesegwixxi dikjarazzjonijiet SQL, tista 'tuża l-istess dikjarazzjoni SQL bħal hawn fuq bħala l-parametru tal-funzjoni mysqli_query().
Ipprova l-eżempju li ġej:
MySQL ORDNI B'test:
<?
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 Blog ( https://www.chenweiliang.com/ ) maqsuma "Użu multi-tabella tad-database MySQL inner join? xellug Left Join Użu Effiċjenza", se jgħinek.
Merħba biex taqsam il-link ta' dan l-artikolu:https://www.chenweiliang.com/cwl-488.html
Biex tiftaħ aktar tricks moħbija🔑, merħba tingħaqad mal-kanal Telegram tagħna!
Share u like jekk jogħġobkom! L-ishma u l-likes tiegħek huma l-motivazzjoni kontinwa tagħna!