Если вы хотите сгруппировать по названию элемента и получить общее количество
select u.name,count(*) as count, c.c_name, c.price*count(*) as totalPrice from user u
inner join transaction t on u.uid=t.uid
inner join ctable c on c.c_id=t.c_id
group by c.c_name
Если вы хотите запросить все транзакции
select u.name, c.c_name, c.price from user u
inner join transaction t on u.uid=t.uid
inner join ctable c on c.c_id=t.c_id
Если вы просто хотите вернуть последнюю транзакцию info
select u.name, c.c_name, c.price from user u
inner join transaction t on u.uid=t.uid
inner join ctable c on c.c_id=t.c_id
order by t.transaction_id desc limit 1
И еще кое-что. Это будет намного лучше, если имена полей будут последовательными.