These set_relation functions need to be on different controller functions since you have one (1) set_table!
Unless you make more than one new grocery_CRUD()!
For A
set_table('a');
set_relation('id_B', 'b', 'id_B');
(similar for table a )
If you want to have multiple tables:
cruda = new grocery_CRUD();
cruda->set_table('a');
cruda->set_relation('id_B', 'b', '{id_B} - {description_B}');
crudb = new grocery_CRUD();
crudb->set_table('b');
crudb->set_relation('id_C', 'c', '{id_C} - {description_C}');
If the above is not very convenient then you need to make your own
model.
Depending on where you want to use description_C you get the field value using the appropriate method.
If you want the value (of description_C) while in server(e.g. you want to use it on a controller function) then just make a model that parses this data.
If you want the value on client side then you need to make some javascript call.