Latest web development tutorials

Используя Mysql соединение

В предыдущих главах мы узнали, что если считывать данные в таблицу, которая является относительно простым, но часто нужно считывать данные из нескольких таблиц в реальном приложении.

В этой главе мы покажем вам, как использовать MySQL JOIN данные запроса в двух или более таблиц.

Вы можете использовать Mysql в SELECT, UPDATE и DELETE заявления РЕГИСТРИРУЙТЕСЬ совместных запросов на нескольких столах.

РЕГИСТРИРУЙТЕСЬ согласно функции разделены на следующие три категории:

  • (Внутреннее соединение, или эквивалентное соединение) INNER JOIN: Получить записи два поля в таблице соответствует отношениям.
  • LEFT JOIN (левое соединение): Получить все записи из левой таблицы правой таблицы, даже если нет соответствующих записей соответствия.
  • RIGHT JOIN (правое соединение): В отличие от LEFT JOIN, получить нужную таблицу для всех записей, даже если левая таблица не имеет соответствующих совпадающие записи.

Структура базы данных и данные , используемые в этом разделе Скачать: w3big.sql .


Использование INNER JOIN командной строки

У нас есть две таблицы tcount_tbl и w3big_tbl в w3big базе данных. Два данных таблицы данных следующим образом:

примеров

Попробуйте следующие примеры:

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>

Далее мы приходим для подключения более двух таблиц в таблице , чтобы прочитать w3big_tbl все значения w3big_count поля w3big_author поля , соответствующие таблице в tcount_tbl с использованием MySQL INNER JOIN (использование может быть опущена INNER JOIN, тот же эффект):

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)

Выше SQL заявление эквивалентно:

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 покинул присоединиться и присоединиться к другому. MySQL LEFT JOIN будет считывать все данные таблицы данных на левой стороне, с правой стороны таблицы даже при отсутствии соответствующих данных.

примеров

Попробуйте следующие примеры, w3big_tbl таблицу слева, tcount_tbl правой таблицы, чтобы понять MySQL LEFT 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)

Приведенные выше примеры использования LEFT JOIN, оператор считывает все выбранное поле данных в левой части таблицы данных w3big_tbl, даже если нет соответствующих правая таблица tcount_tbl в w3big_author значения поля.


MySQL RIGHT JOIN

MySQL RIGHT JOIN считывает все данные справа от таблицы данных на левой стороне стола даже при отсутствии соответствующих данных.

примеров

Попробуйте следующие примеры, tcount_tbl левой таблицы, w3big_tbl правой таблицы, чтобы понять MySQL RIGHT 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)

Приведенные выше примеры используют RIGHT JOIN, оператор считывает все выбранное поле данных в правой части таблицы данных w3big_tbl, даже если нет соответствующей таблицы в левом tcount_tbl в w3big_author значения поля.


РЕГИСТРИРУЙТЕСЬ использование в PHP скриптов

Использование PHP mysql_query () функция для выполнения операторов SQL, вы можете использовать больше, чем того же оператора SQL как mysql_query) параметров функции (.

Попробуйте следующие примеры:

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