Получение данных из нескольких таблиц. JOIN

Рецепт №128. Из книги «128 рецептов php»
Перейти к оглавлению

Для получения записей сразу из нескольких таблиц можно воспользоваться оператором JOIN, который объединяет таблицы. Например, необходимо получить все заказы пользователя. Пользователи находятся в одной таблице(tbl_users), а заказы в другой(tbl_orders). В таком случае, необходимо связать эти таблицы, по полю ID пользователя, которое должно быть в таблице пользователей и в таблице с заказами. Для получения заказов пользователя с ID 1, запрос будет выглядеть следующим образом:

SELECT * FROM `tbl_users`
	JOIN `tbl_orders` 
		ON  `tbl_orders`.`id_user` = `tbl_users`.`id`
	WHERE `tbl_users`.`id` = 1

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

SELECT * FROM `tbl_users`
	LEFT JOIN `tbl_orders` 
		ON  `tbl_orders`.`id_user` = `tbl_users`.`id`
	WHERE `tbl_users`.`id` = 1

Пример:

// предварительно, необходимо реализовать 
// подключение к базе данных

// запрос
$query = mysql_query("
	SELECT * FROM `tbl_users`
	  LEFT JOIN `tbl_orders` 
	    ON  `tbl_orders`.`id_user` = `tbl_users`.`id`
	  WHERE `tbl_users`.`id` = 1
") or die(mysql_error());

// получение результата запроса
$result = array();
while($row = mysql_fetch_array($query, MYSQL_ASSOC)){
	$result[] = $row;
}

// вывод результата
print_r ($result);
Рассказать друзьям:


Получение данных из нескольких таблиц. JOIN: 2 комментария

  1. Данная страница вываливает кучу ошибок:
    Warning: require() [function.require]: Unable to allocate memory for pool. in /var/www/ipato_zpn/data/www/vk-book.ru/wp-settings.php on line 114

    Warning: require() [function.require]: Unable to allocate memory for pool. in /var/www/ipato_zpn/data/www/vk-book.ru/wp-settings.php on line 115

    Warning: require() [function.require]: Unable to allocate memory for pool. in /var/www/ipato_zpn/data/www/vk-book.ru/wp-settings.php on line 116

    И ещё пачку в таком духе.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*