Для реальной базы данных вы должны поработать над ее исправлением. За исключением этого, я бы рекомендовал создать представление в базе данных:
create view v_laptops as
select name, date, model, 1 as which from laptop1 union all
select name, date, model, 2 from laptop2 union all
select name, date, model, 3 from laptop3 union all
select name, date, model, 4 from laptop4;
Затем используйте представление в ваших запросах:
select ot.*, l.*
from othertable ot join
v_laptops l
on ot.name = l.name;
Возможно, вы захотите поговорить с мастерами базы данных про исправление модели данных. Разделение информации по нескольким таблицам обычно является плохой идеей.
Вы действительно не хотите иметь дело с кучей разных таблиц и похожим кодом, на который ссылаются в нескольких запросах. Это похоже на кошмар обслуживания. Представления могут помочь изолировать такие проблемы дизайна от пользователей.