I think you're looking for this:
create tableC as
(select st_intersection(a.geom, b.geom) as geom, a.name as name
from tableA as a, tableB as b
where st_intersects(a.geom, b.geom));
By looking at each intersection separately, you can access all the included data.