Penso che il modo migliore sia creare una tabella temporanea con l'insieme di elementi necessari (procedura che prende gli ID degli elementi come parametri o qualcosa del genere) e quindi unirla a sinistra con tutte le tabelle sopra unite insieme.
Se per un dato basketid NON hai valori nulli sul lato destro del join sinistro, il carrello contiene tutti gli elementi necessari.