Se ho capito bene, vuoi trovare un ordine che abbia una riga d'ordine che soddisfa una condizione (riferimento ="F40") e un'altra riga d'ordine che soddisfa un'altra condizione (description ="Spada").
L'esecuzione di un unico join non risolverà il problema, poiché cercherai una riga d'ordine che soddisfi entrambe le condizioni. Dovresti invece fare qualcosa del genere:
SELECT orderNumber FROM `order`
WHERE id IN (
SELECT orderid FROM orderDetail od1
INNER JOIN orderDetail od2
USING (orderid)
WHERE od1.reference = 'F40' AND od2.description = "Epee"
)