Jag tror att det bästa sättet är att skapa en temporär tabell med uppsättningen av nödvändiga objekt (procedur som tar objekt-ID som parametrar eller något i den stilen) och sedan vänster sammanfoga den med alla ovanstående tabeller sammanfogade.
Om du för en given korgtid INTE har nollor på höger sida av den vänstra sammanfogningen, innehåller korgen alla nödvändiga föremål.