My raw data contains a text string with various codes separated by an underscore. For example, my raw data would contain a string like this, "SAMPLE_DATA_ABC1_NYC", and each of those codes would have corresponding name that is mapped out on another table.
I'd like to set up a query that would evaluate the raw data, look up the associated code (e.g. "_ABC1_") and then return the corresponding name. (See screenshot for an example.)

Any idea how to do this? I tried using IIf and InStr statements, but I keep getting excess rows.
Code:
SELECT st.Campaign, st.Month, st.Week, st.Placement, st.[Placement ID],
IIf(InStr(st.placement, ic.[findInventoryCategory]) > 0,ic.[InventoryCat],"N/A") AS [Inventory Category],
IIf(InStr(st.placement, pth.[findPathway]) > 0,pth.[Pathways],"N/A") AS [Pathway Name]
FROM RawDataFile AS st, mpInventoryCategory AS ic, mpPathway AS pth;