se mod_nome_ita non esiste su una delle due tabelle avrai tutti i risultati di una tabella mentre quelli dell'altra saranno ripetuti perchè la clausola WHERE mod_nome_ita = '%$str%' si applica solo su una delle due tabelle.

In pratica si restringe i set di risultati di una tabella mentre il set di risultati dell'altra rimane completo. In questo modo si ottengono risultati inattesi.

Devi effettuare un join tra le due tabelle in modo da collegare i rispettivi record tra di loro. Poi potrai effettuare il LIKE come criterio di ricerca.

In poche parole ti serve un

SELECT * FROM table1, table2 WHERE table1.es=table2.es AND table1.str = 'peresempio';

In questo caso a differenza di quello che hai fatto tu, prima vengono joinate (collegate) le tabelle, e solo successivamente vengono smistate.