ciao a tutti
vi descrivo il problema

ho 3 tabelle: ordini, categorie e invii

nella tbl ordini ci sono informazioni sugli ordini, con un campo IDCategoria per estrarre la categoria del prodotto ed ovviamente un campo chiave primaria ID
nella tbl invii invece, sono inserite informazioni sugli invii degli ordini e, nello specifico, potrebbe non avere righe qualora l'ordine non sia ancora entrato nella fase di preparazione/spedizione/ecc, oppure potrebbe avere una o più righe se l'ordine sta attraversando le varie fasi

Con una SQL devo trovare il totale di ordini che compaiono almeno una volta in invii, oppure il totale di quelli per cui non c'è ancora nessuna operazione in invii

Ho provato con queste SQL ma danno errori, il db è mySQL

1. conteggio degli ordini che sono in "lavorazione", ovvero compaiono 1 o più volte nella tbl invii
codice:
SELECT COUNT(ordini.ID) as risultati FROM ordini, invii INNER JOIN categorie ON categorie.ID = ordini.IDCategoria WHERE ordini.IDUser = 3 AND invii.IDOrdine IN (ordini.ID)
2. ordini che non sono ancora in lavorazione, ovvero che NON compaiono nella tbl invii
codice:
SELECT COUNT(ordini.ID) as risultati FROM ordini, invii INNER JOIN categorie ON categorie.ID = ordini.IDCategoria WHERE ordini.IDUser = 3 AND invii.IDOrdine NOT IN (ordini.ID)


Qualche anima pia riesce ad aiutarmi?
grazie mille