CREATE TEMPORARY TABLE mysql (создать временную таблицу,)
чтобы создать временную таблицу, копию уже существующей, используйте выражение (несколько примеров) =
CREATE TEMPORARY TABLE new_t LIKE old_t;
CREATE TEMPORARY TABLE 123_avto AS ( SELECT * FROM avto );
где
new_t = это имя новой таблицы
а
old_t = это имя старой (уже существующей в вашей базе данных)таблицы
База данных MySQL допускает создание временных таблиц.
Поскольку mysql не поддерживает вложенные SELECT, можно разбить один сложный SELECT на несколько простых с использованием временных таблиц.
В данном примере мы будем использовать временную таблицу для хранения IP-адресов посетителей из четырех полей:
id_ip — первичный ключ таблицы;
ip — IP-адрес посетителя;
id_user— вторичный ключ, устанавливающий дополнительную связь с таблицей посетителей users. В таблице users этот ключ выступает в качестве первичного;
puttime — время посещения.
Допустим, нам надо выбрать последний IP-адрес для каждого посетителя и время, когда он с него зашел. Можно поступить в два этапа. Сначала выбрать вторичные ключи пользователей id_user и соответствующее им время последнего посещения, а затем в цикле выбрать соответствующие им IP-адреса.
Выбор IP-адреса каждого посетителя и времени посещения Устанавливаем соединение с базой данных include "config.php"; // Формируем SQL-запрос $query ="SELECT DISTINCT(id_user) AS id_user, MAX(puttime) AS max_time FROM ips GROUP BY id_user"; // Выполняем SQL-запрос $first = mysql_query($query); if($first) { while($res = mysql_fetch_array($first)) { // В цикле формируем второй SQL-запрос $query ="SELECT * FROM ips WHERE id_user = ". $res[`id_user`]." AND puttime=".$res[`max_time`]; $final = mysql_query($query); $result = mysql_fetch_array($final); echo $result[`ip`]."-".$result[`puttime`]." "; } } ?>
Недостатком такого подхода является выполнение второго запроса в цикле,
что может создать серьезную нагрузку на сервер MySQL. Выходом из этой
ситуации будет создание временной таблицы с результатами первого запроса,
как это показано ниже.
Создание временной таблицы с результатами запроса
$query ="CREATE TEMPORARY TABLE temp_table SELECT id_user, puttime, ip FROM ips ORDER BY id_user,time DESC"; if(mysql_query($query)) { $sel ="SELECT id_user, puttime, ip FROM temp_table GROUP BY id_user"; $res = mysql_query($sel); if ($res) { while($result = mysql_fetch_array($res)) { echo $result["id user"]." ".$resultf"puttime"]." ".$result["ip"]." ”; } } } ?>
Как видно из листинга, выполнение второго SQL-запроса вынесено из тела
цикла. После выполнения скрипта таблица temp_table, созданная в памяти, будет
уничтожена автоматически.