Hola a todos,

ho un problemuccio che non so se si può risolvere, io ci provo

A causa di alcune query ESTREMAMENTE complesse (e per estremamente intendo esattamente 264 righe di codice sql che fa uso di tabelle derivate, subquery, funzioni e via dicendo) ho la necessità utilizzare delle tabelle pivot.

Per intenderci, su DB2, su AS400, è possibile fare
codice:
WITH
    tabella_pivot_1 AS
    (
        SELECT
            *
        
        FROM
            tabella_1
        
        WHERE
            campo_1 = 'XYZ';
    ),
    
    tabella_pivot_2 AS
    (
        SELECT
            *
        
        FROM
            tabella_2
        
        WHERE
            campo_1 = 'ZYX';
    ),
    
    tabella_pivot_3 AS
    (
        SELECT
            *
        
        FROM
            tabella_pivot_1 AS tp1
            INNER JOIN tabella_pivot_2 AS tp2 ON
            (
                tp2.tabella_2_id = tp1.tabella_1_id
            )
        
        WHERE
            campo_4 = 'ABC';
    ),
    
    tabella_pivot_4 AS
    (
        SELECT
            *
        
        FROM
            tabella_pivot_3 AS tp3
            LEFT JOIN tabella_pivot_1 AS tp1 ON
            (
                tp3.tabella_1_id = tp1.tabella_1_id
            )
        
        WHERE
            campo_3 = 'CBA';
    )

SELECT
.
.
.
(non so fino a che punto abbia senso la query di sopra, è solo un esempio ^^)

Avrei la necessità di fare questo tipo di operazioni su MySQL. Attualmente, come dicevo prima, per evitare di spezzare la query utilizzo delle tabelle derivate, però sono arrivato al punto in cui non posso più gestire la cosa dato che devo rejoinare i dati con se stessi più volte mi ritrovo ad avere una tabella derivata che è quasi la stessa ripetuta e reinserita più volte dentro se stessa :\

Qualcuno conosce un plugin/estensione/componente o comunque qualche soluzione simile alle tabelle pivot presenti su db2, oracle e via dicendo?

Avevo anche pensato ad usare una stored procedures che lavorando sulle view mi componesse i dati, ma in realtà dovrei creare una stored procedure IMMENSAMENTE complessa in quanto le view non possono contenere tabelle derivate (in pratica dovrei creare una decina di view che, necessariamente, dovrebbero essere generate al volo [non so fino a che punto serve una view generata al volo e poi droppata ^^]).

PS: non mi chiedete nulla riguardo alla normalizzazione dei dati, la struttura del db non è mia e non si può toccare ... in realtà ci sono più db ma questo comunque non è un problema.