Questo è quello che hai scritto tu
codice:
SELECT DISTINCT 
tb_citta.Provincia, 
tb_ricerca.Id_Ditta, 
tb_ricerca.RagioneSociale 

FROM 
((tb_citta INNER JOIN tb_ricerca ON tb_citta.Provincia=tb_ricerca.Provincia) 
INNER JOIN tb_indici ON tb_indici.Id_Ditta = tb_ricerca.Id_Ditta) 

WHERE Regione='$_GET[isc]' AND Settore='$_GET[ssc]' 

ORDER BY RagioneSociale
Ed è assolutamente corretto sintatticamente. Io dicevo solo di usare un modo diverso di scrivere il join, ma solo perchè io uso quello e lo trovo più chiaro. Con riferimento alla tua query:

codice:
SELECT DISTINCT 
tb_citta.Provincia, 
tb_ricerca.Id_Ditta, 
tb_ricerca.RagioneSociale 

FROM tb_citta, tb_ricerca, tb_indici

WHERE
tb_citta.Provincia = tb_ricerca.Provincia AND
tb_indici.Id_Ditta = tb_ricerca.Id_Ditta AND
Regione='$_GET[isc]' AND 
Settore='$_GET[ssc]'

ORDER BY RagioneSociale
in pratica elenchi nella clausola FROM le tabelle di cui vuoi effettuare il join separate dalla cirgola e nella clausola WHERE elenchi le condizioni secondo cui unire le tabelle che sono poi le stesse che hai inserito nella tua query dopo ON (qualcosa = qualcos'altro).

Riguardo alla costruzione della tabella temporanea se scrivi questo

codice:
CREATE TEMPORARY TABLE nomeTabella

SELECT DISTINCT 
tb_citta.Provincia, 
tb_ricerca.Id_Ditta, 
tb_ricerca.RagioneSociale 

FROM 
((tb_citta INNER JOIN tb_ricerca ON tb_citta.Provincia=tb_ricerca.Provincia) 
INNER JOIN tb_indici ON tb_indici.Id_Ditta = tb_ricerca.Id_Ditta) 

WHERE Regione='$_GET[isc]' AND Settore='$_GET[ssc]' 

ORDER BY RagioneSociale
Lui ti crea una tabella temporanea che ha per colonne gli elementi che hai selezionato ovvero Provincia, Id_Ditta e RagioneSociale e per righe il risultato della SELECT

spero sia più chiaro
ciauz