У меня небольшая проблема с SQL, и мне нужна ваша помощь.Я запрашиваю базу данных Oracle из рабочего процесса (термин, относящийся к конкретному приложению).Мне нужно получить правильное значение catgeory из таблицы, которая выглядит как приведенная ниже, с учетом списка CRI_ID.
CAT CRI_ID
268_0_43_BR 506
268_0_43_BR 507
268_0_43_BR 508
268_0_43_BR 509
462_406_42_TR 508
462_406_42_TR 509
Кажется простым, но проблема в том, что один и тот же CRI_ID может иметь более одного CAT.Таким образом, в основном у меня была бы переменная $ {CRI_IDs}, которая содержит список CRI_IDs.Возьмите это в качестве примера:
- $ {CRI_IDs} = 506,507, 508,509 >> Ожидаемый CAT = 268_0_43_BR
- $ {CRI_IDs} = 508,509 >> Ожидаемый CAT = 462_406_42_TR
Это делает невозможным любое использование соединения / пересечения / подзапроса, так как я всегда получу обе категории обратно.Любая идея, что будет подходящим запросом в этом случае?
Я уже пробовал такие вещи, как ниже, но он возвращает обе категории.
select cat from table where cri_id in (${CRI_IDs});
select table.cat from table join (select ${CRI_IDs} from dual) tmp on table.cri_id=tmp.id;
Кстати, не стесняйтесь предполагать вместо переменной, котораяУ меня есть другая таблица (например, tmp), которая содержит список CR_ID в одном из столбцов