Why is this db_select not working?
This is answered in this other question:

How to perform join with multiple columns using db_select?


  Calls to SelectQuery::join() (like-wise SelectQuery::leftJoin(),
  SelectQuery::innerJoin(), and SelectQuery::addJoin()) chain-able
  because those methods don't return a SelectQuery object, but the
  actual alias used for the join.