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.