Вы можете использовать функцию COALESCE()
, чтобы выбрать первое значение, которое не является нулевым.
SELECT tracce.titolo, tracce.data, a1.aka as 'main', COALESCE(a2.aka, feat.ida) as 'feat'
FROM tracce
LEFT JOIN artist a1 ON tracce.idma = a1.id
LEFT JOIN feat ON feat.idt = tracce.id
LEFT JOIN artist a2 ON a2.id = feat.ida
Это должно дать вам результат, который вы ищете.
Но ваш дизайн БД ошибочен и может привести к проблемам в будущем. Вы не должны хранить два разных типа значений в одном поле (id / name). Например, что вы собираетесь делать, если у вас будет артист, который будет использовать номер в качестве псевдонима. В такой ситуации вы не сможете сказать, является ли номер идентификатором или именем. Гораздо лучше будет иметь дополнительный столбец для имени исполнителя, если у исполнителя нет записи в вашей таблице исполнителей.