Per come è insensatamente organizzata quella tabella, la tua è l'unica soluzione possibile in quanto non si possono ne effettuare join ne subquery.
Sarebbero da smistare reparti, personale e prodotti in 3 tabelle distinte e raggruppate per l'id_up che corrisponde all'id nella tabella dei reparti, così da poter archiviare maggiori info e poter recuperare tutto sempre e solo con un unica query che interroga tutte e tre le tabelle.