Во-первых, вы не хотите иметь таблицу для каждого класса.Вы собираете один и тот же тип информации в нескольких таблицах, и это обычно считается плохой практикой.Вы хотите «нормализовать» свои данные так, чтобы одни и те же данные существовали в одном месте.
Во-вторых, назовите ваши таблицы соответствующим образом, чтобы вы понимали, что вы на самом деле пытаетесь построить.Может быть, вы обобщаете, чтобы замаскировать свои намерения в отношении реальных реализаций, используя «ab» в вопросе, но если вы делаете это в своем реальном коде, это нанесет вам вред в долгосрочной перспективе.
Похожевам нужна таблица людей с именами и таблица друзей, где вы отслеживаете, кто с кем дружит:
create table people ( id int, name char(128) );
create table friends ( id int, person_id int, friend_id int );
Тогда вам просто нужен запрос для получения групп:
SELECT person.* FROM friends
INNER JOIN friends grp
ON friends.friend_id = grp.person_id
INNER JOIN people person
ON person.id = grp.friend_id
WHERE friends.person_id = 42;