• User Newbie

    ottimizzare query mysql

    Ciao ragazzi, non sono molto esperto di mysql e vi vorrei chiedere se è possibile ottimizzare una query. In breve...

    Ho sotto mano un database strutturato in modo assurdo ❌ gestione magazzino con un'unica tabella; nella tabella ci inserisco i reparti, la merce e il personale;
    i campi sono: id, tipo, id_up, nome

    tipo=r indica che è un reparto; tipo=m è una merce; tipo=p è uno del personale;
    quando inserisco merce o personale, nel campo id_up metto l'id del reparto;
    quando inserisco un reparto metto id_up=0;

    i dati della tabella magazzino per esempio potrebbero essere questi:

    id, tipo, id_up, nome
    1, 'r', 0, 'detersivi' (reparto detersivi con id=1)
    2, 'm', 1, 'detersivo per piatti' (merce del reparto 1)
    3, 'm', 1, 'detersivo per pavimenti' (merce del reparto 1)
    4, 'p', 1, 'mario rossi' (personale del reparto 1)
    .....

    Partendo da un qualsiasi prodotto devo risalire al personale adetto al reparto. Ossia partendo da 'detersivo per piatti' devo risalire a 'mario rossi'.
    Al momento faccio 2 query:
    "select id_up from magazzino where id=2" (prendo id_up dal prodotto)
    mi salvo id_up in una variabile (abc) e poi
    "select nome from magazzino where id_up=abc"
    e quindi con un semplice ciclo while ho i nomi degli addetti al reparto dei detersivi.

    Posso ottenere i nomi del personale con un'unica query partendo dall'id prodotto?? :mmm:

    Grazie mille 🙂


  • User

    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.