Latest web development tutorials

Mit Mysql Verbindung

In den vorangegangenen Kapiteln haben wir gelernt, dass, wenn die Daten in einer Tabelle zu lesen, die relativ einfach ist, aber oft müssen Daten aus mehreren Tabellen in einer realen Anwendung zu lesen.

In diesem Kapitel zeigen wir Ihnen, wie Sie mit der MySQL-Query-Daten in zwei oder mehr Tabellen JOIN.

Sie können Mysql in SELECT, UPDATE, verwenden und DELETE-Anweisungen gemeinsamen Multi-Table-Abfragen zu verbinden.

JOIN nach Funktion in die folgenden drei Kategorien eingeteilt:

  • (Interne Verbindung oder eine entsprechende Verbindung) INNER JOIN: Aufzeichnung zwei Felder Get in der Tabelle Beziehungen entspricht.
  • LEFT JOIN (linker Anschluss): Holen Sie sich alle Datensätze aus der linken Tabelle mit der rechten Tabelle, auch wenn es keine entsprechenden Bilder gefunden ist.
  • JOIN (richtige Verbindung) RECHTS: Im Gegensatz zu den LEFT JOIN, erhalten die richtige Tabelle für alle Datensätze, auch wenn die linke Tabelle keine entsprechenden Bilder gefunden hat.

Datenbank - Struktur und Daten in diesem Abschnitt Download verwendet: w3big.sql .


Verwenden INNER JOIN Eingabeaufforderung

Wir haben zwei Tabellen tcount_tbl und w3big_tbl in w3big Datenbank. Zwei Datentabellen-Daten sind wie folgt:

Beispiele

Versuchen Sie, die folgenden Beispiele:

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>

Als nächstes kommen wir zu mehr als zwei Tabellen in der Tabelle verbinden zu lesen w3big_tbl alle w3big_author Feld w3big_count Feldwerte entsprechend der Tabelle in tcount_tbl mit MySQL INNER JOIN (Verwendung kann weggelassen werden INNER JOIN, um den gleichen Effekt):

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)

Oben SQL-Anweisung ist äquivalent zu:

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 LEFT JOIN und andere beitreten. MySQL LEFT JOIN werden alle Daten der Datentabelle auf der linken Seite, der rechten Seite des Tisches, auch wenn keine entsprechenden Daten gelesen.

Beispiele

Versuchen Sie, die folgenden Beispiele, w3big_tbl linken Tabelle, tcount_tbl der rechten Tabelle, zu verstehen , MySQL LEFT Anwendungen JOIN:

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)

Die obigen Beispiele verwenden die LEFT JOIN, die Anweisung liest alle das Feld ausgewählten Daten auf der linken Seite der Datentabelle w3big_tbl, auch wenn es rechten Tabelle tcount_tbl in w3big_author Feldwert nicht entspricht.


MySQL RIGHT JOIN

MySQL RIGHT JOIN liest alle Daten auf der rechten Seite der Datentabelle auf der linken Seite des Tisches, auch wenn keine entsprechenden Daten.

Beispiele

Versuchen Sie, die folgenden Beispiele, tcount_tbl linken Tabelle, w3big_tbl der rechten Tabelle, zu verstehen , MySQL RIGHT Anwendungen JOIN:

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)

Die obigen Beispiele eine RIGHT JOIN verwenden, ist die Anweisung liest alle ausgewählten Datenfeld auf der rechten Seite der Datentabelle w3big_tbl, auch wenn es in der linken tcount_tbl in w3big_author Feldwert keine entsprechende Tabelle.


JOIN Verwendung in PHP-Skripten

PHP Funktion mysql_query () SQL-Anweisungen ausführen, können Sie mehr als die gleiche SQL-Anweisung als mysql_query () Funktion Parameter verwenden.

Versuchen Sie, die folgenden Beispiele:

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