Databasa MySQL ya hundurîn tevlî karanîna pir-tabloyê dibe? karîgeriya karanîna tevlêbûna çepê çepê

Databasa MySQLkaranîna pir-tabloya tevlêbûna hundurîn? karîgeriya karanîna tevlêbûna çepê çepê

Mysql bikaranîna girêdanê

Di beşên berê de, em fêr bûn ku meriv çawa daneyan ji yek tabloyê dixwîne, ku ew nisbeten hêsan e, lê di serîlêdanên rastîn de pir caran hewce ye ku meriv daneyan ji gelek tabloyên daneyê bixwîne.

Di vê beşê de em ê nîşanî we bidin ka meriv çawa JOIN-ya MySQL bikar tîne da ku daneyên di du an bêtir tabloyan de bipirse.

Hûn dikarin JOIN-a Mysql-ê di daxuyaniyên SELECT, NÛKIRIN û JÊBIRKIRINA de bikar bînin da ku beşdarî pirsên pir-tabloyê bibin.

JOIN li gorî fonksiyona xwe bi gelemperî li sê kategoriyên jêrîn dabeş dibe:

  • PÊWENDIYA HUNDIR (tevliheviya hundurîn, an jî hevgirêdan): Di du tabloyan de tomarên bi qadên lihevhatî bistînin.
  • ÇEP TEVLÊBÛNA (tevlîbûna çepê):Hemî tomarên di tabloya çepê de bistînin, tevî ku di tabloya rastê de tomarên lihevhatî tune bin.
  • RAST JOIN (Tevlîbûna rast): Berevajî LEFT JOIN, ew ji bo bidestxistina hemî tomarên di tabloya rastê de, tê bikar anîn, her çend di tabloya çepê de tomarên lihevhatî tune bin.

Bikaranîna INNER JOIN di Fermana Ferman de

Di databasa chenweiliang de du tabloyên me tcount_tbl û chenweiliang_tbl hene.Daneyên du tabloyên daneyan wiha ne:

Nûçe

Mînakên jêrîn biceribînin:

daneyên nimûneya 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)

Piştre em ê MySQL bikar bîninJI INNER JOIN (hûn dikarin INNER jî derxînin û JOIN bikar bînin, bandor heman e)Ji bo girêdana her du tabloyên jorîn ji bo xwendina nirxa qada chenweiliang_count ku bi hemî qadên chenweiliang_author re di tabloya chenweiliang_tbl de di tabloya tcount_tbl de têkildar e, bixwînin:

Jİ NİZİNE

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)

Daxuyaniya SQL ya jorîn wekhev e:

WHERE bend

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 ÇEPÊ PÊKIRIN

Tevlêbûna çepê ya MySQL ji tevlêbûnê cûda ye. MySQL LEFT JOIN dê hemî daneyên di tabloya daneya çepê de bixwîne, her çend tabloya rastê daneyên têkildar tune be.

Nûçe

Mînakên jêrîn biceribînin chenweiliang_tbl ji bo maseya çepê,tcount_tbl Ji bo tabloya rast, serîlêdana MySQL LEFT JOIN fêm bikin:

ÇEP TEVLÎ

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)

Di mînaka jorîn de, ÇEPÊ JOIN tê bikaranîn. Ev gotin dê hemî daneyên zeviyê yên hilbijartî yên tabloya daneyê chenweiliang_tbl li milê çepê bixwîne, tevî ku di tabloya tcount_tbl ya rastê de nirxa zeviyê ya têkildar a chenweiliang_author tune be.


MySQL RAST TEVLÊBÛNA

MySQL RIGHT JOIN dê hemî daneyên di tabloya daneyê ya li milê rastê de bixwîne, tevî ku di tabloya li milê çepê de daneyên têkildar tune.

Nûçe

Mînakên jêrîn biceribînin chenweiliang_tbl ji bo maseya çepê,tcount_tbl Ji bo tabloya rast, serîlêdana MySQL RIGHT JOIN fêm bikin:

RAST JI BO

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 di mînaka jorîn de tê bikar anîn, ev gotin dê hemî daneyên zeviyê bijartî yên tabloya daneya rast tcount_tbl bixwîne, hetta di tabloya çepê de chenweiliang_tbl nirxa zeviya chenweiliang_author ya têkildar tune be.


Di script PHP de JOIN bikar bînin

Fonksiyona mysqli_query() di PHP-ê de ji bo pêkanîna daxuyaniyên SQL-ê tê bikar anîn, hûn dikarin heman daxuyaniya SQL ya li jor wekî pîvana fonksiyona mysqli_query() bikar bînin.

Mînaka jêrîn biceribînin:

MySQL ORDER BY 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/ ) parve kir "Bikaranîna pir-tabloya tevlêbûna hundurê databasa MySQL? Berbiçavkirina Tevlêbûna Çep hiştin", ew ê ji we re bibe alîkar.

Bi xêr hatî bo parvekirina girêdana vê gotarê:https://www.chenweiliang.com/cwl-488.html

Hûn bi xêr hatin kanala Telegramê ya bloga Chen Weiliang da ku nûvekirinên herî dawî bistînin!

🔔 Bibin yê yekem ku di pelrêça jorîn a kanalê de "Rêbernameya Bikaranîna Amûra AI-ya Kirrûbirra Naveroka ChatGPT" ya bi qîmet bistîne! 🌟
📚 Ev rêber nirxek pir mezin dihewîne, 🌟Ev derfetek kêm e, wê ji dest nede! ⏰⌛💨
Heke hûn hez dikin parve bikin û hez bikin!
Parvekirin û ecibandinên we motîvasyona meya domdar e!

 

评论

Navnîşana e-nameya we nayê weşandin. Zeviyên pêdivî têne bikar anîn * Awanasî

li jor bigerin