Ciao a tutti... ho un problemino con una query un po' difficile (per me)

La query deve beccare i dati da 3 tabelle:
- tabella marca (cod_marca,nome,cod_distr sono i dati indispensabili)
- tabella societa (cod_soc,societa sono i dati indispensabili)
- tabella enti (cod_soc,societa sono i dati indispensabili)

La query deve ritornare una tabella dove per ogni marca venga associato il nome società (che puo essere di un ente o di una societa), quindi una LEFT JOIN più l'unione delle 2 tabelle (societa,enti). Io ho scritto un codice, ma naturalmente non funzia, però vi aiuta a capire quello che volevo fare:
codice:
SELECT mod_rubrica_societa.societa,mod_riparazione_marche.id,mod_riparazione_marche.cod_marca,mod_riparazione_marche.nome,mod_riparazione_marche.descr,mod_riparazione_marche.flagCentri,mod_riparazione_marche.cod_distr
FROM mod_riparazione_marche LEFT JOIN 
(SELECT societa,cod_soc FROM mod_rubrica_societa UNION SELECT societa,cod_soc FROM mod_rubrica_enti) as tab_soc
ON mod_riparazione_marche.cod_distr=tab_soc.cod_soc
ORDER BY mod_riparazione_marche.nome
La soluzione se possibile dovrebbe essere su una sola query in modo da poter fare delle ricerche al volo con il WHERE.
Grazie