use aliases
Id expect a query with 3 left joins would do the job, although there may well be a better solution...
Code:
select OI.User_ID, OI.Product_ID,........ from Order_Items as OI
left join order_items as A on A.User_ID=oi.User_ID
left join order_items as B on B.User_ID=oi.User_ID
left join order_items as C on C.User_ID=oi.User_ID
where A.Product_ID=101
and B.Product_ID=102
and C.Product_ID=103
and a.user_id != NULL
and b.user_id != NULL
and c.user_id != NULL
order by OI.User_ID
now whether it works or not I haven't got a clue.....
the left join should extract all records from OI, and those that match in the alisases A,B & C
where the product code is the required product code in A,B & C
AND where the use_ID in A, B & C is not NULL (ie there is something in the User_ID for each of the aliases, which we know if its present will be the same as the original table OI because of the join definition
it should work.. but it'll probably get slated by the knowledgeable ones here
you may need to check the not equals sign in MySQL,
likewise you may need to check if there is a better way of expressing comparisions to NULL using a function