Draaitabellen maken het gemakkelijk om uw gegevens te analyseren en nuttige trends te krijgen. Mogelijk moet u echter draaitabelquery's automatiseren om ze vaak te gebruiken. Aangezien MySQL geen functie heeft voor het maken van draaitabellen, moet u een SQL-query schrijven om draaitabellen in MySQL te automatiseren. Laten we dus eens kijken hoe we draaitabelquery's in MySQL kunnen automatiseren
Hoe draaitabellen in MySQL automatiseren
Hier zijn de stappen om draaitabelquery's in MySQL te automatiseren. Stel dat u de volgende tabel heeft
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 | +------+------------+------------+-------------+
Stel dat u de tabel wilt draaien met examen kolom om 1 rij te maken voor elke meeting_id en 1 kolom voor elke field_key, zoals hieronder weergegeven.
+------------+-------------+-------------+-------------+ | Meeting_id | first_name | last_name | occupation | +------------+-------------+-------------+-------------+ | 1 | Alec | Jones | engineer | | 2 | John | Doe | engineer | +------------+-------------+-------------+-------------+
Automatiseer draaitabelquery's
Als u al weet hoeveel kolommen u moet maken, kunt u draaitabelquery's maken met de instructie CASE om een draaitabel te maken.
Vaak weet u echter niet welke kolommen u in draaitabellen moet maken. In dergelijke gevallen kunt u dynamisch draaitabellen maken met behulp van de volgende query.
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;
In de bovenstaande instructies kunt u met GROUP_CONCAT field_key-waarden van meerdere rijen samenvoegen tot één tekenreeks. In de bovenstaande query gebruiken we GROUP_CONCAT om dynamisch CASE-instructies te maken, gebaseerd op de unieke waarden in de kolom field_key en op te slaan in de @sql-variabele, die vervolgens wordt gebruikt om onze selectiequery te maken. Het helpt u dus bij het automatiseren van draaitabelquery's in MySQL
+------------+------------+-----------+------------+ | Meeting_id | first_name | last_name | occupation | +------------+------------+-----------+------------+ | 1 | Alec | Jones | engineer | | 2 | John | Doe | engineer | +------------+------------+-----------+------------+
Nu u weet hoe u draaitabelquery's in MySQL kunt automatiseren, kunt u ze aanpassen aan uw vereisten door de WHERE-clausule of JOINS toe te voegen.
Als u alleen rijwaarden als kolommen wilt draaien, kunt u de WHERE-component toevoegen aan uw eerste select GROUP_CONCAT-instructie.
SELECT GROUP_CONCAT(DISTINCT CONCAT( 'max(case when field_key = ''', field_key, ''' then field_value end) ', field_key ) ) INTO @sql FROM Meeting WHERE <condition>;
Als u rijen in uw uiteindelijke draaitabel wilt filteren, kunt u de WHERE-component in uw SET-instructie toevoegen.
SET @sql = CONCAT('SELECT Meeting_id, ', @sql, ' FROM Meeting WHERE <condition> GROUP BY Meeting_id');
Op dezelfde manier kunt u JOINS ook toepassen in uw SQL-query terwijl u rijen dynamisch naar kolommen transponeert in MySQL.
U kunt draaitabelquery's automatiseren met behulp van een rapportagetool. Hier is een voorbeeld van een geautomatiseerde draaitabel gemaakt met Ubiq.
Wist je dat je draaitabellen in Ubiq kunt maken door gewoon te slepen en neer te zetten?
Als u draaitabellen, grafieken, dashboards en rapporten wilt maken vanuit de MySQL-database, kunt u Ubiq proberen. We bieden een gratis proefperiode van 14 dagen aan.