select w1.id, wp1.age, w1.coins_needed, w1.power
from wands w1
left join wands_property wp1
on w1.code = wp1.code
right join (
select wp.age age, w.power power, min(w.coins_needed) coins
from wands w
left join wands_property wp
on w.code = wp.code
where wp.is_evil = 0
group by wp.age, w.power) t2
on wp1.age = t2.age and w1.coins_needed = t2.coins and w1.power = t2.power
order by w1.power desc, wp1.age desc