Isn't that a bit more complicated than necessary? Due to the unique constraints defined in the ddl, we know that every row in table1 is unique and a box has only one row, and therefore one size, in table2. Therefore, we don't really need the MIN function and can do a simple join left outer join as in your original answer. In the code below, I just added the boxid column to your original response and dropped the MIN function.
I don't do a lot of SQL programming, so I am just wondering for my own learning. Wouldn't this work and be more straightforward?
Code:
SELECT table1.boxid
, table1.balltype
, table2.size AS min_size
FROM table1
LEFT OUTER
JOIN table2
ON table2.boxid = table1.boxid
GROUP
BY table1.balltype