I have this query for gathering the information about a single order and its become quite complex.
I don\'t have any data to test with so i\'m asking, if anyone has
You don't have anywhere near the limit of JOINs for MySQL. Your number of joins isn't bad. However, joining on a derived table (your inner subquery) as you're doing can cause performance issues, since derived tables don't have indexes. Performing a join on a derived table without indexes can be slow.
You should consider making a real temporary table with indexes for joining, or figure out a way to avoid the subquery.
A JOIN in MySQL is basically like doing a lookup (seek) for each joined row. So, MySQL will have to perform many lookups if you are joining many records. It's less about how many tables you join than the number of rows that you join that can be a problem.
Anyway, MySQL will only perform so many seeks before it will give up and just read the whole table. It does a pretty good job at deciding which will be less expensive.
Perhaps the best thing you can do is help it guess by updating the index statistics with ANALYZE TABLE.
You can have one WHERE clause per SELECT. So your inner subquery will have a WHERE clause and your outer query will have a WHERE clause, and these get applied after the JOIN (at least logically, though MySQL will generally apply them first for performance).
Also, all of this is assuming you know how to properly use indexes.