If you run a Magento e-commerce store, you may occasionally find existing customers placing orders without being logged into their account. This isn’t a problem usually, unless the customer is one of those vary rare ones which actually logs into the customer frontend to track/check their order(s). If they weren’t logged in, they won’t see the ecommerce order.
So how do you fix this? Well, there is a Magneto module available to do this, but (as is increasingly common in the Magento world) it costs $99. Or there is my way which is free and requests two SQL statements:
UPDATE sales_flat_order, customer_entity
SET sales_flat_order.customer_id=customer_entity.entity_id
WHERE
sales_flat_order.customer_email=customer_entity.email
UPDATE sales_flat_order_grid,sales_flat_order
SET sales_flat_order_grid.customer_id=sales_flat_order.customer_id
WHERE
sales_flat_order_grid.increment_id=sales_flat_order.increment_id
Done.