Although the picking of items may make up as much as 60% of all labor activities in a warehouse and may account for as much as 65% of all operating expenses, many order picking problems are still not well understood. Indeed, usually simple rules of thumb or straightforward constructive heuristics are used in practice, even in state-of-the-art warehouse management systems, however, it might well be that more attractive algorithmic alternatives could be developed. We address one such a fundamental materials handling problem: the batching of orders in a parallel-aisle warehouse so as to minimize the total traveling time needed to pick all items. Many heuristics have been proposed for this problem, however, a fundamental analysis of the problem is still lacking. In this paper, we first address the computational complexity of the problem. We prove that this problem is NP-hard in the strong sense but that it is solvable in polynomial time if no batch contains more than two orders. This result is not really surprising but it justifies the development of approximation and/or enumerative optimization algorithms for the general case. Our primary goal is to develop a branch-and-price optimization algorithm for the problem. To this end, we model the problem as a generalized set partitioning problem and present a column generation algorithm to solve its linear programming relaxation. Furthermore, we develop a new approximation algorithm for the problem. Finally, we test the performance of the branch-and-price algorithm and the approximation algorithm on a comprehensive set of instances. The computational experiments show the compelling performance of both algorithms.