В дополнение к ответу Гуффы, здесь есть еще один подход - предполагая, что @category_id равен
SET @category_id = 'some_category_id_value'
, тогда
SELECT t1.type_id
WHERE category_id = @category_id
UNION ALL
SELECT t2.value_id
WHERE category_id = @category_id
UNION ALL
SELECT t3.group_id
WHERE category_id = @category_id
должен вернуть то, что вы просите (и производительность тоже неплохая).
Если у вас есть определенные category_id
в более чем одной таблице, вы получите несколько записей (вы можете получить из этого, ограничив количество результатов до 1; вам может понадобиться сделать весь союзподзапрос и закажите его, но не уверен, обратитесь к документации)
Тем не менее, ваш вопрос выглядит так, как будто у вас есть проблемы с дизайном ваших таблиц
- почему вы держите три категорииа не одна таблица?
- Какова связь между type_id, value_id и group_id и почему имеет смысл выбирать их, как если бы они были одним и тем же (каково значение / семантика каждой таблицы / столбца)?
- как вы гарантируете, что у вас нет записей в нескольких таблицах, которые соответствуют одному продукту (и реализуете другие бизнес-правила, которые у вас могут быть)?
Эти вопросы могут иметьправильные ответы, но вы должны знать их:)