2015-09-10 4 views
0

У меня есть несколько таблиц, которые выглядят как этотВыбрать из нескольких таблиц, которые заканчиваются на

CREATE TABLE IF NOT EXISTS `%SYSTEMNAME%_bookings` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `begins` datetime NOT NULL, 
    ... 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ; 

Где% SystemName% может быть что-нибудь и может быть х количеством таблиц.

Я хотел бы иметь возможность получить список каждой записи (отборное заявление) во всех таблицах, причиной этого является, чтобы сделать статистику о том, сколько заказов на каждый день и так далее)

Как это можно сделать, это немного мой обычный sql-материал.

ответ

0

Я не думаю, что вы можете достичь этого с помощью простого SQL-запроса. Я бы создал хранимую процедуру с курсором на этом statement:

SHOW TABLES FROM yourDB LIKE '%_bookings'; 
-1

Нет, это не нормально. Вы не можете указать имя таблицы переменных в одном запросе. Вы должны либо использовать UNION между несколькими SELECT запросов, при условии, что таблицы имеют или SELECT одинаковое количество полей из всех таблиц, как

SELECT a, b, c FROM tbl1 
UNION 
SELECT d, e, f FROM tbl2 
UNION 
SELECT g, h, i FROM tbl3 
... 

или использовать несколько SELECT в подготовленных заявлений как

SET $table_name = (SELECT tbl_name FROM system_tables LIMIT 1, @OFFSET); 
SET @s = CONCAT('select * from ', @table_name); 

PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 
Смежные вопросы