Cronfa ddata MySQL mewnol ymuno defnydd aml-tabl? effeithlonrwydd defnydd ymuno chwith chwith

Cronfa ddata MySQLdefnydd aml-bwrdd ymuno mewnol? effeithlonrwydd defnydd ymuno chwith chwith

Mysql defnydd o gysylltiad

Yn y penodau blaenorol, rydym wedi dysgu sut i ddarllen data o un tabl, sy'n gymharol syml, ond mewn cymwysiadau go iawn yn aml mae angen darllen data o dablau data lluosog.

Yn y bennod hon byddwn yn dangos i chi sut i ddefnyddio JOIN MySQL i ymholi data mewn dau dabl neu fwy.

Gallwch ddefnyddio Mysql's JOIN mewn datganiadau DEWIS, DIWEDDARU a DILEU i ymuno ag ymholiadau aml-bwrdd.

Rhennir JOIN yn fras i'r tri chategori canlynol yn ôl ei swyddogaeth:

  • YMuno MEWNOL (uno mewnol, neu equijoin): Cael cofnodion gyda meysydd paru mewn dau dabl.
  • YMUNWCH CHWITH (ymuno chwith):Sicrhewch yr holl gofnodion yn y tabl chwith, hyd yn oed os nad oes unrhyw gofnodion cyfatebol yn y tabl cywir.
  • YMUNWCH I'R DDE (ymuno ar y dde): Yn groes i JOIN CHWITH, fe'i defnyddir i gael yr holl gofnodion yn y tabl cywir, hyd yn oed os nad oes unrhyw gofnodion cyfatebol cyfatebol yn y tabl chwith.

Defnyddio JOIN INNER yn Command Prompt

Mae gennym ddau dabl tcount_tbl a chenweiliang_tbl yn y gronfa ddata chenweiliang.Mae data’r ddau dabl data fel a ganlyn:

enghraifft

Rhowch gynnig ar yr enghreifftiau canlynol:

data enghreifftiau prawf

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)

Nesaf byddwn yn defnyddio MySQLJOIN INNER (gallwch hefyd hepgor INNER a defnyddio JOIN, mae'r effaith yr un peth)I gysylltu'r ddau dabl uchod i ddarllen gwerth y maes chenweiliang_count sy'n cyfateb i'r holl feysydd chenweiliang_author yn y tabl chenweiliang_tbl yn y tabl 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)

Mae'r datganiad SQL uchod yn cyfateb i:

LLE cymal

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)

YMUNO MySQL CHWITH

Mae ymuno chwith MySQL yn wahanol i ymuno. Bydd MySQL LEFT JOIN yn darllen yr holl ddata yn y tabl data chwith, hyd yn oed os nad oes gan y tabl cywir unrhyw ddata cyfatebol.

enghraifft

Rhowch gynnig ar yr enghreifftiau canlynol i chenweiliang_tbl ar gyfer y bwrdd chwith,tcyfrif_tbl Ar gyfer y tabl cywir, deallwch gymhwysiad MySQL LEFT JOIN:

YMUNWCH CHWITH

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)

Yn yr enghraifft uchod, defnyddir LEFT JOIN, a bydd y datganiad hwn yn darllen yr holl ddata maes dethol o'r tabl data chenweiliang_tbl ar y chwith, hyd yn oed os nad oes gwerth maes cyfatebol o chenweiliang_author yn y tabl tcount_tbl ar y dde.


YMUNO â MySQL DDE

Bydd MySQL RIGHT JOIN yn darllen yr holl ddata yn y tabl data ar y dde, hyd yn oed os nad oes data cyfatebol yn y tabl ar y chwith.

enghraifft

Rhowch gynnig ar yr enghreifftiau canlynol i chenweiliang_tbl ar gyfer y bwrdd chwith,tcyfrif_tbl Ar gyfer y tabl cywir, deallwch gymhwysiad MySQL RIGHT JOIN:

YMUNWCH I'R DDE

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)

Defnyddir JOIN DDE yn yr enghraifft uchod, bydd y datganiad hwn yn darllen yr holl ddata maes dethol o'r tabl data tcount_tbl ar y dde, hyd yn oed os nad oes gwerth maes cyfatebol chenweiliang_author yn y tabl chenweiliang_tbl ar y chwith.


Gan ddefnyddio JOIN yn sgript PHP

Defnyddir y ffwythiant mysqli_query() yn PHP i weithredu datganiadau SQL, gallwch ddefnyddio'r un datganiad SQL ag uchod â pharamedr y swyddogaeth mysqli_query().

Rhowch gynnig ar yr enghraifft ganlynol:

GORCHYMYN MySQL GAN brawf:

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

Blog Chen Weiliang Gobeithio ( https://www.chenweiliang.com/ ) shared "Defnydd aml-tabl o ymuno mewnol cronfa ddata MySQL? chwith Chwith Ymunwch ag Effeithlonrwydd Defnydd", bydd yn eich helpu.

Croeso i chi rannu dolen yr erthygl hon:https://www.chenweiliang.com/cwl-488.html

Croeso i sianel Telegram o blog Chen Weiliang i gael y diweddariadau diweddaraf!

🔔 Byddwch y cyntaf i gael y "Canllaw Defnydd Offer AI Marchnata Cynnwys ChatGPT" gwerthfawr yng nghyfeiriadur uchaf y sianel! 🌟
📚 Mae'r canllaw hwn yn cynnwys gwerth enfawr, 🌟Mae hwn yn gyfle prin, peidiwch â'i golli! ⏰⌛💨
Rhannwch a hoffwch os hoffech chi!
Eich rhannu a'ch hoff bethau yw ein cymhelliant parhaus!

 

发表 评论

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. 必填 项 已 用 * Label

sgroliwch i'r brig