sql >> Database >  >> RDS >> Mysql

Maak een samenvattend resultaat met één query

Dit is een standaard pivot-query:

  SELECT uc.uut_sn,
         MAX(CASE 
               WHEN uc.characteristic_name = 'char_name_1' THEN uc.characteristic_value 
               ELSE NULL 
             END) AS char_name_1,
         MAX(CASE 
               WHEN uc.characteristic_name = 'char_name_2' THEN uc.characteristic_value 
               ELSE NULL 
             END) AS char_name_2,
         MAX(CASE 
               WHEN uc.characteristic_name = 'char_name_3' THEN uc.characteristic_value 
               ELSE NULL 
             END) AS char_name_3,
    FROM unit_characteristics uc
GROUP BY uc.uut_sn

Om het dynamisch te maken, moet je gebruiken MySQL's dynamische SQL-syntaxis genaamd Prepared Statements . Het vereist twee queries - de eerste krijgt een lijst van de characteristic_name waarden, zodat u de juiste tekenreeks in de CASE-expressies kunt samenvoegen, zoals u in mijn voorbeeld ziet als de ultieme query.



  1. psycopg2 op elastische bonenstaak - kan app niet implementeren

  2. Opvragen vanuit selectievakjes

  3. Hoe maak ik verbinding met mysql vanuit php?

  4. Samenvoegen van het resultaat van twee queries mysql