Difference between the given queries
Consider the following odetails data:

ono   pno
---------
1     1
1     2


If you join it on itself by ono, like

SELECT pno
FROM odetails d1 JOIN odetails d2 ON d1.ono = d2.ono;


then you will get four rows instead of two.  So the two queries are different in their meaning even though they return the same data (thanks to the DISTINCT keyword).

(There is a possibility for similar problem with joining the orders table twice.  As you did not mention the exact requirements for this query, one can't be sure if even the first query is correct.  (Acknowledgment to ypercube for mentioning this.))