Olivier, this question is almost certainly someone's homework, and you do the questioner a disservice by not following sql standards
any time you have a GROUP BY, it must include all non-aggregate columns in the SELECT list
in this particular example, when you have orders.* in the SELECT list but only orders.order_id in the GROUP BY, you are fortunate, because the orders table appears to have only one column in it!
in general you cannot use * in the SELECT list unless you itemize each and every column in the GROUP BY
only mysql lets you get away with "hidden" group by fields (do a search on mysql.com for "group by hidden")
finally, i just wanted to point out that DISTINCT with GROUP BY is unnecessary (and wasteful), since groups are, by definition, unique