Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да автоматизирате заявките за обобщена таблица в MySQL

Обобщените таблици улесняват анализирането на вашите данни и получаването на полезни тенденции. Въпреки това, може да се наложи да автоматизирате заявките за въртяща се таблица, за да ги използвате често. Тъй като 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-дневен безплатен пробен период.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2 функции, които връщат името на месеца от дата в MySQL

  2. Как да разположите Percona XtraDB Cluster 8 за висока наличност

  3. Наблюдение на вашите бази данни с MySQL Enterprise Monitor

  4. Как работи функцията TO_BASE64() в MySQL

  5. Експортиране на MySQL в изходящ файл:CSV екраниращи знаци