Quello che dici è vero, ma io sto esercitandomi e sto cercando di capire la differenza di costi.
sto procedendo per gradi, ho creato una subquery che mi restituisce id_cliente, id_fattura, tot_imponibile e data di tutte le fattura che contengono l'id_cliente che soddisfa determinate condizioni.
SELECT
f.ID_CLIENTE,f.ID_FATTURA, f.TOTALE_IMPONIBILE, f.data
FROM fattura f
where f.ID_cliente = (SELECT c.id_cliente from cliente c where c.id_cliente = f.ID_CLIENTE
and f.id_fattura IN (select d.id_fattura from dett_fattura d where d.id_fattura = f.id_fattura and f.data BETWEEN to_date('01/01/2016', 'dd/mm/yyyy') AND to_date('11/11/2016', 'dd/mm/yyyy')
and d.QUANTITA_PRODOTTO > 3));
poi ne ho creato un altra che mi restituisce l'id_cliente, la rag_soc e la partita iva
SELECT
c.ID_CLIENTE,c.PARTITA_IVA,c.RAG_SOC
FROM cliente c
where c.ID_cliente IN
(SELECT f.id_cliente from fattura f where f.id_cliente = c.ID_CLIENTE
and f.id_fattura IN (select d.id_fattura from dett_fattura d where d.id_fattura = f.id_fattura and f.data BETWEEN to_date('01/01/2016', 'dd/mm/yyyy') AND to_date('11/11/2016', 'dd/mm/yyyy')
and d.QUANTITA_PRODOTTO > 3)) order by c.RAG_SOC;
la prima mi restituisce 28 tuple, la seconda 5.
I risultati sono esatti, poiché se inserisco una clausola distinct alla query con i join ho 28 risultati.
Quello che non riesco a fare e "combinarle" per avere l'identico risultato che ottengo con la query con i join.
Ho provato diversi metodi ma ho sempre l'errore too many values