Groupwise by groupwise select?
I think this will solve the problem. It shows users that have associated less distinct files than data.

Since the files associated for a user are less than the data, at least one file must be associated with more than one data (for that user):

SELECT 
    ud.user 
FROM 
    data_1 AS ud
      JOIN data_2 AS df
      ON ud.data = df.data
GROUP BY 
    ud.user
HAVING 
    COUNT(DISTINCT df.file) &lt; COUNT(*) ;


The query assumes you have UNIQUE constraints on data_1 (user, data) and on data_2 (data, file).