Это выводит до 3 желаний (с нулями в столбцах желаний, когда у них нет желания)
select
name,
g1.goods as wish1,
g2.goods as wish2,
g3.goods as wish3
from tablea a
left join tableb g1.id on g1.wishlist1
left join tableb g2.id on g1.wishlist2
left join tableb g3.id on g1.wishlist3
Хотя это может быть лучше и аккуратнее, если вы не возражаете против списка желаний, разделенных запятыми:
select
name,
group_concat(goods) as wishes
from tablea a
left join tableb b on b.id in (a.wishlist1, a.wishlist2, a.wishlist3)
group by name;
который выдаст:
name | wishes
------|----------------------
john | car,aircraft,bicycle
paul | motorbike,ipad