The keyword DISTINCT is doing what it's supposed to be doing, which is it is only select unique combinations of columns 'year' + 'part_type' + 'side'. It is the combination of all three columns that makes it unique. So if you had values like 2004, part123, and sideA and another row exactly the same (2004, part123, sideA), only one of those rows would be selected. But a row with values like '2004', 'part123', and 'sideB' would show up in the result set, even though the year is the same for the first example I gave you. That is because the combination of the values '2004', 'part123', and 'sideB' make the combination of the three columns unique.
So what to do? Revisit your database design. Since you have duplicate values in the columns 'year', 'part_type' and 'side', consider breaking those off into their own tables and establish a linking table since you would have a many-to-many relatinonship between them.
Once you've done that, you could use a JOIN in your query and depending on the WHERE clause in your query, you should be able to achieve your goal.
You should try this on a small scale before you make any changes to your production database and/or tables.