Latest web development tutorials

Korzystanie Połączenie MySQL

W poprzednich rozdziałach, dowiedzieliśmy się, że jeśli odczyt danych w tabeli, która jest stosunkowo prosta, ale często potrzebują do odczytu danych z wielu tabel w rzeczywistej aplikacji.

W tym rozdziale będziemy wam pokazać, jak korzystać z MySQL JOIN danych kwerendy w dwóch lub więcej tabel.

Można użyć MySQL SELECT, UPDATE i DELETE do wspólnych JOIN kwerend wielu tabel.

DOŁĄCZ zgodnie z funkcją podzielony na następujące trzy kategorie:

  • (Połączenie wewnętrzne, lub równowartość połączenia) INNER JOIN: Get rekordowe dwa pola w tabeli odpowiada relacji.
  • LEFT JOIN (lewa połączenia): Zbierz wszystkie rekordy z tabeli po lewej, prawej tabeli, nawet jeśli nie ma odpowiedniego rekordy pasujące.
  • RIGHT JOIN (prawy połączenia): W przeciwieństwie do LEFT JOIN, uzyskać odpowiednią tabelę dla wszystkich rekordów, nawet jeśli lewy tabeli nie ma odpowiednich rekordów ogłoszeń.

Struktura bazy danych, a dane użyte w niniejszym dziale Download: w3big.sql .


Użyj INNER JOIN wiersza polecenia

Mamy dwie tabele tcount_tbl i w3big_tbl w w3big bazie. Dwa danych tabele danych są następujące:

Przykłady

Wypróbuj poniższe przykłady:

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>

Dalej dochodzimy do podłączenia więcej niż dwóch tabel w tabeli czytać w3big_tbl wszystkie pola w3big_author w3big_count wartości pól odpowiadających tabeli w tcount_tbl użyciu MySQL INNER JOIN (stosowanie może zostać pominięty INNER JOIN, ten sam efekt):

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)

Przede instrukcji SQL jest równoważne:

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 i dołącz różne. MySQL LEFT JOIN odczyta wszystkie dane z tabeli danych po lewej, po prawej stronie tabeli, nawet jeśli nie odpowiednie dane.

Przykłady

Wypróbuj poniższe przykłady, w3big_tbl lewy stół tcount_tbl prawej tabeli, aby zrozumieć MySQL LEFT JOIN aplikacje:

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)

Powyższe przykłady użyć LEFT JOIN, oświadczenie czyta wszystkie pola Wybrane dane z lewej strony w3big_tbl tabeli danych, nawet jeśli nie ma odpowiedniego prawa ręka tcount_tbl tabela w w3big_author wartości pola.


MySQL RIGHT JOIN

MySQL RIGHT JOIN odczytuje wszystkie dane do prawej strony tabeli danych po lewej stronie stołu, nawet jeśli nie odpowiednich danych.

Przykłady

Wypróbuj poniższe przykłady, tcount_tbl lewo stół w3big_tbl prawej tabeli, aby zrozumieć MySQL RIGHT JOIN aplikacje:

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)

Powyższe przykłady używają RIGHT JOIN, oświadczenie czyta wszystkie wybranego pola danych z prawej strony w3big_tbl tabeli danych, nawet jeśli nie ma odpowiedniej tabeli w lewym tcount_tbl w w3big_author wartości pola.


DOŁĄCZ wykorzystania w skryptach PHP

Zastosowanie PHP mysql_query () do wykonania instrukcji SQL, można użyć więcej niż tej samej instrukcji SQL mysql_query () jako parametr funkcji.

Wypróbuj poniższe przykłady:

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