Обобщените таблици улесняват анализирането на вашите данни и получаването на полезни тенденции. Въпреки това, може да се наложи да автоматизирате заявките за въртяща се таблица, за да ги използвате често. Тъй като MySQL няма функция за създаване на централни таблици, трябва да напишете SQL заявка, за да автоматизирате централни таблици в MySQL. Така че нека да разгледаме как да автоматизираме заявките за централна таблица в MySQL
Как да автоматизирате запитванията за обобщена таблица в MySQL
Ето стъпките за автоматизиране на заявките за централна таблица в MySQL. Да приемем, че имате следната таблица
CREATE TABLE Meeting ( ID INT, Meeting_id INT, field_key VARCHAR(100), field_value VARCHAR(100) ); INSERT INTO Meeting(ID,Meeting_id,field_key,field_value) VALUES (1, 1,'first_name' , 'Alec'); INSERT INTO Meeting(ID,Meeting_id,field_key,field_value) VALUES (2, 1,'last_name' , 'Jones'); INSERT INTO Meeting(ID,Meeting_id,field_key,field_value) VALUES (3, 1,'occupation' , 'engineer'); INSERT INTO Meeting(ID,Meeting_id,field_key,field_value) VALUES (4,2,'first_name' , 'John'); INSERT INTO Meeting(ID,Meeting_id,field_key,field_value) VALUES (5,2,'last_name' , 'Doe'); INSERT INTO Meeting(ID,Meeting_id,field_key,field_value) VALUES (6,2,'occupation' , 'engineer'); +------+------------+------------+-------------+ | ID | Meeting_id | field_key | field_value | +------+------------+------------+-------------+ | 1 | 1 | first_name | Alec | | 2 | 1 | last_name | Jones | | 3 | 1 | occupation | engineer | | 4 | 2 | first_name | John | | 5 | 2 | last_name | Doe | | 6 | 2 | occupation | engineer | +------+------------+------------+-------------+
Да приемем, че искате да завъртите таблицата чрез изпит колона, така че да създадете 1 ред за всеки идентификатор на срещата и 1 колона за всеки ключ_поле, както е показано по-долу.
+------------+-------------+-------------+-------------+ | Meeting_id | first_name | last_name | occupation | +------------+-------------+-------------+-------------+ | 1 | Alec | Jones | engineer | | 2 | John | Doe | engineer | +------------+-------------+-------------+-------------+
Автоматизирани заявки за обобщена таблица
Ако вече знаете броя на колоните, които трябва да бъдат създадени, можете да създавате заявки за централна таблица, като използвате оператор CASE, за да създадете обобщена таблица.
Много пъти обаче не знаете колоните, които трябва да създадете в осевите таблици. В такива случаи можете динамично да създавате централни таблици, като използвате следната заявка.
SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'max(case when exam = ''', exam, ''' then field_value end) ', field_key ) ) INTO @sql FROM Meeting; SET @sql = CONCAT('SELECT Meeting_id, ', @sql, ' FROM Meeting GROUP BY Meeting_id'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
В горните изрази GROUP_CONCAT ви позволява да обединявате стойности на поле_ключ от множество редове в един низ. В горната заявка използваме GROUP_CONCAT за динамично създаване на CASE изрази въз основа на уникалните стойности в колоната field_key и съхраняваме в @sql променлива, която след това се използва за създаване на нашата заявка за избор. Така че ви помага да автоматизирате заявките за централна таблица в MySQL
+------------+------------+-----------+------------+ | Meeting_id | first_name | last_name | occupation | +------------+------------+-----------+------------+ | 1 | Alec | Jones | engineer | | 2 | John | Doe | engineer | +------------+------------+-----------+------------+
Сега, след като знаете как да автоматизирате заявките за централна таблица в MySQL, можете да ги персонализирате според вашите изисквания, като добавите клауза WHERE или JOINS.
Ако искате да завъртите само избраните стойности на редове като колони, можете да добавите клауза WHERE във вашия 1-ви оператор за избор GROUP_CONCAT.
SELECT GROUP_CONCAT(DISTINCT CONCAT( 'max(case when field_key = ''', field_key, ''' then field_value end) ', field_key ) ) INTO @sql FROM Meeting WHERE <condition>;
Ако искате да филтрирате редове в крайната си обобщена таблица, можете да добавите клаузата WHERE във вашия оператор SET.
SET @sql = CONCAT('SELECT Meeting_id, ', @sql, ' FROM Meeting WHERE <condition> GROUP BY Meeting_id');
По същия начин можете да приложите JOINS във вашата SQL заявка, докато транспонирате редове в колони динамично в MySQL.
Можете да автоматизирате заявки за центрирана таблица с помощта на инструмент за отчитане. Ето пример за автоматизирана въртяща се таблица, създадена с помощта на Ubiq.
Знаете ли, че можете да създавате централни таблици в Ubiq, като използвате просто плъзгане и пускане?
Ако искате да създадете централни таблици, диаграми, табла за управление и отчети от MySQL база данни, можете да опитате Ubiq. Предлагаме 14-дневен безплатен пробен период.