Latest web development tutorials

Utilisation d'une connexion Mysql

Dans les chapitres précédents, nous avons appris que si lire des données dans une table, ce qui est relativement simple, mais souvent besoin de lire les données de plusieurs tables dans une application réelle.

Ce chapitre, nous allons vous montrer comment utiliser MySQL REJOIGNEZ données de requête dans deux ou plusieurs tables.

Vous pouvez utiliser Mysql dans SELECT, UPDATE et DELETE pour JOIN requêtes multi-tables conjointes.

JOIN selon leur fonction divisé en trois catégories suivantes:

  • (Connexion interne, ou la connexion équivalente) INNER JOIN: Obtenir enregistrer deux champs dans la table correspond à des relations.
  • LEFT JOIN (connexion de gauche): Obtenez tous les enregistrements de la table gauche, table droite, même s'il n'y a aucun enregistrement correspondant correspondants.
  • RIGHT JOIN (connexion à droite): Contrairement à la LEFT JOIN, obtenir la bonne table pour tous les dossiers, même si la table de gauche n'a aucun enregistrement correspondant correspondants.

la structure de base de données et les données utilisées dans cette section Téléchargement: w3big.sql .


Utilisez INNER JOIN invite de commande

Nous avons deux tables tcount_tbl et w3big_tbl dans la base de données w3big. Deux données de tables de données sont les suivantes:

Exemples

Essayez les exemples suivants:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> SELECT * FROM tcount_tbl;
+-----------------+----------------+
| w3big_author | w3big_count |
+-----------------+----------------+
| mahran          |             20 |
| mahnaz          |           NULL |
| Jen             |           NULL |
| Gill            |             20 |
| John Poul       |              1 |
| Sanjay          |              1 |
+-----------------+----------------+
6 rows in set (0.01 sec)
mysql> SELECT * from w3big_tbl;
+-------------+----------------+-----------------+-----------------+
| w3big_id | w3big_title | w3big_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Learn PHP      | John Poul       | 2007-05-24      |
|           2 | Learn MySQL    | Abdul S         | 2007-05-24      |
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-06      |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.00 sec)
mysql>

Ensuite , nous arrivons à connecter plus de deux tables dans la table pour lire w3big_tbl toutes les valeurs de champ w3big_count de terrain w3big_author correspondant à la table en tcount_tbl utilisant MySQL INNER JOIN (utilisation peut être omise INNER JOIN, le même effet):

mysql> SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a INNER JOIN tcount_tbl b ON a.w3big_author = b.w3big_author;
+-----------+---------------+--------------+
| w3big_id | w3big_author | w3big_count |
+-----------+---------------+--------------+
|         1 | John Poul     |            1 |
|         3 | Sanjay        |            1 |
+-----------+---------------+--------------+
2 rows in set (0.00 sec)

Au-dessus de l'instruction SQL est équivalent à:

mysql> SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a, tcount_tbl b WHERE a.w3big_author = b.w3big_author;
+-------------+-----------------+----------------+
| w3big_id | w3big_author | w3big_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
2 rows in set (0.01 sec)
mysql>


MySQL LEFT JOIN

MySQL laissé rejoindre et rejoindre différents. MySQL LEFT JOIN va lire toutes les données de la table de données sur la gauche, le côté droit de la table, même si aucune donnée correspondante.

Exemples

Essayez les exemples suivants, table w3big_tbl gauche, tcount_tbl la table de droite, de comprendre MySQL LEFT JOIN applications:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a LEFT JOIN tcount_tbl b ON a.w3big_author = b.w3big_author;
+-------------+-----------------+----------------+
| w3big_id | w3big_author | w3big_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           2 | Abdul S         |           NULL |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
3 rows in set (0.02 sec)

Les exemples ci-dessus utilisent le LEFT JOIN, la déclaration se lit tout le champ de données sélectionné à la gauche de la table de données w3big_tbl, même s'il n'y a pas de table correspondant tcount_tbl de droite en valeur du champ w3big_author.


MySQL RIGHT JOIN

MySQL RIGHT JOIN lit toutes les données à la droite de la table de données sur le côté gauche de la table, même si aucune donnée correspondante.

Exemples

Essayez les exemples suivants, tcount_tbl table de gauche, w3big_tbl la table de droite, de comprendre MySQL RIGHT JOIN applications:

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
Database changed
mysql> SELECT b.w3big_id, b.w3big_author, a.w3big_count FROM tcount_tbl a RIGHT JOIN w3big_tbl b ON a.w3big_author = b.w3big_author;
+-------------+-----------------+----------------+
| w3big_id | w3big_author | w3big_count |
+-------------+-----------------+----------------+
|           1 | John Poul       |              1 |
|           2 | Abdul S         |           NULL |
|           3 | Sanjay          |              1 |
+-------------+-----------------+----------------+
3 rows in set (0.02 sec)

Les exemples ci-dessus utilisent une jointure droite, la déclaration se lit tout le champ de données sélectionné à droite de la table de données w3big_tbl, même s'il n'y a pas de table correspondante dans la tcount_tbl gauche en valeur du champ w3big_author.


JOIN utilisation dans des scripts PHP

l'utilisation de PHP mysql_query () pour exécuter des instructions SQL, vous pouvez utiliser plus de la même instruction SQL que mysql_query () paramètres de la fonction.

Essayez les exemples suivants:

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT a.w3big_id, a.w3big_author, b.w3big_count FROM w3big_tbl a INNER JOIN tcount_tbl b ON a.w3big_author = b.w3big_author';

mysql_select_db('w3big');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    echo "Author:{$row['w3big_author']}  <br> ".
         "Count: {$row['w3big_count']} <br> ".
         "Tutorial ID: {$row['w3big_id']} <br> ".
         "--------------------------------<br>";
} 
echo "Fetched data successfully\n";
mysql_close($conn);
?>