Ho trovato una risposta, anche se mi soddisfa a metà.
Praticamente distinct non funzionava perchè agiva su tutti i campi della tabella cd_tracce, perchè nella SELECT selezionavo tutti i campi. Nulla cambia aggiungendo le parentesi, distinct agisce su tutti i campi selezionati.
Riscrivendo la query così:
Codice PHP:
$query="SELECT distinct(cd_tr.traccia) FROM cd_tracce cd_tr
INNER JOIN tracce_autori_tracce t_a_t
ON t_a_t.id_cd_tracce = cd_tr.id
INNER JOIN autori_tracce au_tr
ON au_tr.id = t_a_t.id_autori_tracce
WHERE concat(au_tr.nome,' ',au_tr.cognome) LIKE '%$_GET[principale]%' ";
ho risolto, perchè seleziono solo il campo "traccia" e quindi distinct agisce solo su quel campo.
Mi soddisfa a metà perchè se io avessi bisogno di ricavare anche i dati degli altri campi della tabella (non è il mio caso) non saprei come fare.