$query2="CREATE TEMPORARY TABLE IF NOT EXISTS '".$territory."' SELECT ter_name,ter_address,ter_type_id,ter_level,ter_mask,reg_id FROM t_koatuu_tree where reg_id = ".$territory." AND t_koatuu_tree.ter_type_id BETWEEN 2 and 3";
$db->query($query2);
$query ="SELECT * FROM '".$territory."'";
echo 'temp'.$query."<br>".'not temp'.$query2."<br>";
$result = $db->query($query);
Запрос идет, но временная таблица не создается.
Как правильно было работать с временной таблицей?
Запрос идет, но временная таблица не создается.
Запрос CREATE TABLE ... SELECT не умеет создавать временные таблицы и не допускает модификатора IF NOT EXISTS.
Если Вам необходима строго TEMPORARY TABLE - придётся, как в обсуждении вопроса написал Алексей Шиманский, первым запросом (CREATE) создавать, вторым (INSERT) наполнять.
Если можно обойтись статической таблицей (использование БД строго однопользовательское или не влом создавать и удалять таблицы с уникальными именами для каждого подключения) - тогда можете смело использовать CREATE TABLE ... SELECT.
ВАЖНОЕ ЗАМЕЧАНИЕ. И в первом, и во втором случае таблица будет создана (если не указать иначе) на дефолтном движке, почти наверняка это MyISAM - так что если не хочется попусту дёргать жёсткий диск (а судя по описанию, это так), укажите явно использование движка Engine=MEMORY. Тогда на диск будет записана только структура таблицы, а данные останутся в памяти, не трогая диск. 27 записей - это достаточно компактно, чтобы не задумываться об излишнем расходе памяти.
UPDATE: Если принято решение создавать временную таблицу, то самое разумное - вспомнить, что она локальна для соединения, сессии. Т.е. если она вдруг существует - её можно удалить, и никому другому это не помешает (с оговорками, конечно, помешать можно - но только себе самому). А потому ИМХО наиболее разумно поступить так:
DROP TEMPORARY TABLE IF EXISTS `temptable`;
CREATE TEMPORARY TABLE `temptable` (<table definition>) ENGINE = MEMORY;
INSERT INTO `temptable` SELECT <fieldset> FROM `sourcetablename`;
А уж выполнить это одним мультизапросом или тремя отдельными - решайте сами.
Продвижение своими сайтами как стратегия роста и независимости