Salve gente, devo scrivere dell'sql che faccia il seguente lavoro:

Dal codice lotto bisogna andare a leggere i movimenti di magazzino con quel lotto (in ordine di prodotto/data movimento) e stampare tutto quello che si trova, con questo troviamo tutti i movimenti del lotto digitato ma non basta. Voglio anche sapere quel lotto da quale altro lotto è stato creato e qui entrano in gioco degli attributi specifici presenti sempre sui movimenti di magazzino:

- Num.Documenti di produzione (anno e numero) (solo nel caso in cui ci sia dentro qualcosa)

Tramite questo numero devo rileggere i movimenti di magazzino e vedere quali altri lotti materiali sono stati prelevati e stamparli. Considera che il ciclo potrebbe arrivare all'infinito, cioè il lotto a fatto dal lotto b fatto a sua volta dal lotto c fatto dal lotto d, ecc......
Io ho scritto il seguente codice:
codice:
SELECT
     lotti.`CODICE_LOTTO`,
     movimenti_magazzino.`NUMERO_MOVIMENTO`,
     movimenti_magazzino.`CODICE_ARTICOLO`,
     movimenti_magazzino.`CODICE_MAGAZZINO,
     movimenti_magazzino.`DATA_MOVIMENTO`,
     movimenti_magazzino.`CAUSALE_MOVIMENTO`,
     movimenti_magazzino.`QUANTITA_MOVIMENTO`,
     movimenti_magazzino.`NUMERO_DOC_PROD`,
     movimenti_magazzino.`ANNO_DOC_PROD`,
     tab_causali_magazzino.`DESCRIZIONE`,
     movimenti_magazzino.`UNITA_MISURA`
FROM
     movimenti_magazzino RIGHT OUTER JOIN lotti ON movimenti_magazzino.`CODICE_LOTTO` = lotti.`CODICE_LOTTO`
     LEFT OUTER JOIN tab_causali_magazzino ON movimenti_magazzino.`CAUSALE_MOVIMENTO` = tab_causali_magazzino.`CODICE_CAUSALE`
WHERE
     lotti.`CODICE_LOTTO` = '1234'
Ora del lotto 1234 mi ridà tutti i movimenti, però mi manca la parte che ricava quale lotto ha generato il lotto 1234.
Come potrei fare?