MySQLi - Joins verwenden
Bisher haben wir jeweils nur Daten aus einer Tabelle abgerufen. Dies ist für einfache Takes in Ordnung, aber in den meisten realen MySQL-Anwendungen müssen Sie häufig Daten aus mehreren Tabellen in einer einzigen Abfrage abrufen.
Sie können mehrere Tabellen in Ihrer einzelnen SQL-Abfrage verwenden. Der Beitritt zu MySQLi bezieht sich auf das Zerschlagen von zwei oder mehr Tabellen in einer einzigen Tabelle.
Sie können JOINS in den Anweisungen SELECT, UPDATE und DELETE verwenden, um MySQLi-Tabellen zu verbinden. Wir werden auch ein Beispiel für LEFT JOIN sehen, das sich von einfachem MySQLi JOIN unterscheidet.
Verwenden von Joins an der Eingabeaufforderung
Angenommen, wir haben zwei Tabellen tutorials_bks und tutorials_inf, in TUTORIALS. Eine vollständige Auflistung finden Sie unten -
Beispiel
Probieren Sie die folgenden Beispiele aus -
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * FROM tcount_bks;
+----+---------+
| id | book |
+----+---------+
| 1 | java |
| 2 | java |
| 3 | html |
| 4 | c++ |
| 5 | Android |
+----+---------+
5 rows in set (0.00 sec)
mysql> SELECT * from tutorials_inf;
+----+-------+
| id | name |
+----+-------+
| 1 | sai |
| 2 | johar |
| 3 | raghu |
| 4 | ram |
+----+-------+
4 rows in set (0.00 sec)
mysql>
Jetzt können wir eine SQL-Abfrage schreiben, um diese beiden Tabellen zu verbinden. Diese Abfrage wählt alle Namen aus der Tabelle austutorials_inf und nimmt die entsprechende Anzahl von Tutorials von auftutorials_bks.
mysql> SELECT a.id, a.name,b.id FROM tutorials_inf a,tutorials_bks b WHERE a.id = b.id;
+----+-------+----+
| id | name | id |
+----+-------+----+
| 1 | sai | 1 |
| 2 | johar | 2 |
| 3 | raghu | 3 |
| 4 | ram | 4 |
+----+-------+----+
4 rows in set (0.00 sec)
mysql>
In der Tabelle tutorials_bks haben wir 5 Datensätze, aber im obigen Beispiel werden nur 4 ID-Datensätze pro Abfrage gefiltert und angegeben
Verwenden von Joins in PHP Script
Sie können jede der oben genannten SQL-Abfragen im PHP-Skript verwenden. Sie müssen nur die SQL-Abfrage an die PHP-Funktion übergebenmysqli_query() und dann werden Sie die Ergebnisse auf übliche Weise abrufen.
Beispiel
Probieren Sie das folgende Beispiel aus:
<?php
$dbhost = 'localhost:3306';
$dbuser = 'root';
$dbpass = '';
$dbname = 'TUTORIALS';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
if(! $conn ) {
die('Could not connect: ' . mysqli_error());
}
echo 'Connected successfully</br>';
$sql = 'SELECT a.id, a.name,b.id FROM tutorials_inf a,tutorials_bks b WHERE a.id = b.id';
if($result = mysqli_query($conn, $sql)) {
if(mysqli_num_rows($result) > 0) {
echo "<table>";
echo "<tr>";
echo "<th>id</th>";
echo "<th>name</th>";
echo "<th>id</th>";
echo "</tr>";
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['name'] . "</td>";
echo "<td>" . $row['id'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_free_result($result);
} else {
echo "No records matching your query were found.";
}
} else {
echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
}
mysqli_close($conn);
?>
Die Beispielausgabe sollte folgendermaßen aussehen:
Connected successfully
id name id
1 sai 1
2 johar 2
3 raghu 3
4 ram 4
MySQL LEFT JOIN
Ein MySQLi-Link-Join unterscheidet sich von einem einfachen Join. Ein MySQLi LEFT JOIN berücksichtigt besonders die Tabelle auf der linken Seite.
Wenn ich einen LEFT JOIN mache, erhalte ich alle Datensätze, die auf die gleiche Weise übereinstimmen, und zusätzlich erhalte ich einen zusätzlichen Datensatz für jeden nicht übereinstimmenden Datensatz in der linken Tabelle des Joins - wodurch sichergestellt wird, dass (in meinem Beispiel) jeder Name einen erhält Erwähnung -
Beispiel
Probieren Sie das folgende Beispiel aus, um LEFT JOIN zu verstehen -
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql>SELECT a.id, a.name,b.id FROM tutorials_inf a LEFT JOIN tutorials_bks b ON a.id = b.id;
Sie müssten mehr üben, um sich mit JOINS vertraut zu machen. Dies ist ein etwas komplexes Konzept in MySQL / SQL und wird anhand realer Beispiele klarer.