Ciao,

dato che MySQL non supporta le FULL JOIN non riesco a capire come potrei fare una UNION con 2 tabelle.

CLIENTI_SERVIZI (scrivo solo i campi che mi interessano)
id
id_servizio
dataora_inizio
...

INCASSI
id
servizio_id
dataora_incasso
insoluto
id_categoria
...

SERVIZI
id
descrizione
tipo_servizio
id_tipo_pagamento
...

In sostanza ci sono dei CLIENTI_SERVIZI che producono una riga di incasso ed altri no.
Devo estrarre i dati per visualizzare un grafico in un range di date suddiviso per tipologia di servizio (servizi.tipo_id) e incasso prodotto.

Al momento ho fatto così:

Codice PHP:
        SELECT
            DATE_FORMAT
(i.dataora_incasso'%m/%Y'data_incasso,
            
SUM( IF(i.id_categoria NOT IN (8), i.importo0)) incasso,
            
SUM( IF(s.tipo_servizio AND s.id_tipo_pagamento AND i.insoluto AND i.id_categoria NOT IN (8,10), 10) ) nuovi_rid,
            
SUM( IF(s.tipo_servizio AND s.id_tipo_pagamento AND i.insoluto AND i.id_categoria NOT IN (8,10), 10) ) nuovi_web

        FROM
            clienti_servizi cs INNER JOIN incassi ON cs
.id_cliente_servizio i.id_cliente_servizio
            INNER JOIN servizi s ON s
.id_servizio i.id_servizio
        WHERE
            DATE
(i.dataora_incasso) >= STR_TO_DATE('$data_dal','%d/%m/%Y')
            AND 
DATE(i.dataora_incasso) <= STR_TO_DATE('$data_al''%d/%m/%Y')
            AND 
i.pagato 1
            
AND cs.id_sede 1
        GROUP BY
            data_incasso
        ORDER BY
            i
.dataora_incasso
Ci sono degli IF perchè devo estrarre le tipologie ed uso SUM perchè devo comunque ottenere un risultato suddiviso per giorno (giorno, settimana, mese o anno).
Il problema è che così escludo tutti quei servizi che non hanno prodotto incasso.

Facendo una LEFT JOIN il problema invece è un altro: sul grafico i dati devono essere suddivisi con dataora_incasso, però nel caso di un servizio che non ha incasso vorrei usare la dataora_inizio.

Qualche aiuto? (non so se sia chiaro il tutto, in caso darò chiarimenti).
Grazie
ciao