Perfetto nman.
Ho sostituito le INNER JOIN con le LEFT JOIN ottenendo così un recordset completo di tutti gli articoli con o senza i movimenti.
Però non so se, nonostante il risultato è quello atteso, la sequenza con cui queste si susseguono è esatta ed in seguito potrebbe darmi problemi.
Le due query modificate sono quelle che mostro qui di seguito:
la prima:
Codice PHP:
$Query "SELECT sql_mag_articoli.id_articolo, 
    CONCAT_WS(' ', sql_mag_fornitori.rag_sociale, sql_mag_articoli.descr_articolo) AS prodotto, 
    SUM(sql_mag_acquisti.qta_acquisto) AS qta
    FROM 
    sql_mag_fornitori LEFT JOIN sql_mag_articoli ON sql_mag_fornitori.id_fornitore = sql_mag_articoli.id_fornitore 
    LEFT JOIN sql_mag_acquisti ON sql_mag_acquisti.id_articolo = sql_mag_articoli.id_articolo
    GROUP BY (prodotto) 
    ORDER BY sql_mag_articoli.id_articolo"

La seconda :
Codice PHP:
$Query "SELECT sql_mag_articoli.id_articolo, 
    CONCAT_WS(' ', sql_mag_fornitori.rag_sociale, sql_mag_articoli.descr_articolo) AS prodotto, 
    SUM(sql_mag_acquisti.qta_acquisto) AS qta_acquistata, 
    SUM(sql_mag_vendita.qta_vendita) AS qta_venduta, 
    (SUM(sql_mag_acquisti.qta_acquisto) - SUM(sql_mag_vendita.qta_vendita)) AS giacenza
    From 
    sql_mag_articoli LEFT JOIN sql_mag_fornitori USING (id_fornitore)
    LEFT JOIN sql_mag_acquisti USING (id_articolo)
    LEFT JOIN sql_mag_vendita USING (id_articolo) 
    GROUP BY (prodotto)
    ORDER BY sql_mag_articoli.id_articolo"

Il risultato ovviamente è sempre questo
http://mikevba.altervista.org/nuovo/...situazione.php