多表关联的一个问题,该如何实现?

表A的参数:
a_id INT(10),
a_type VARCHAR(255),
work_id INT(10),
表B的参数:
b_id INT(10),
表C的参数:
c_id INT(10),
现在的功能就是如果a_type的值为b,则a_id的值为b_id的值,若
a_type的值为c,则a_id的值为c_id的值。
存储过程该怎么写呢?想了快一周了。。。

CREATE PROCEDURE set_credit
(
a_id INT(10),
a_type VARCHAR(255),
work_id INT(10),
)

用case when语法就行了,三表联合,用inner join,两个