left join on closest date
There is a mismatch between the data and results in your question but I think you need a query like this. It's not going to be very efficient if the orders table is big:

SELECT 
    o.*,            -- pick the columns you want
    p.*             -- in the result 
FROM orders AS o
  LEFT JOIN price AS p
    ON p.date =
       ( SELECT pi.date
         FROM price AS pi
         WHERE pi.date &lt;= o.date
         ORDER BY pi.date DESC
         LIMIT 1
       ) ;


Tested (with modified data in the orders table) in: SQLfiddle.