a parte che 3 video e 1 doc = 6 righe non è che mi torni tanto... ma va beh, è secondario

Il problema è che a livello logico, per ottenere quello che vuoi dovresti usare una union, non una join. Ma per fare una union devi avere dei resultset uniformi, cioè formati dallo stesso numero di colonne con le stesse caratteristiche. Siccome i tuoi dati non sono così, le possibilità che ti rimangono sono due:
1) fai una query distinta per ogni tipo di prodotto
2) provi a creare una union facendo corrispondere le colonne dello stesso tipo e riempiendo con dei null nelle query dove mancano dati