il foreach ti farebbe comunque una query alla volta.... poi con tutte quelle condizioni ogni record e' sicuramente unico.

non credo tu possa fare una query multi-record