How to add table column aliases
Okay, I fixed it by doing the following:

$query-&gt;addField('sub1', 'data', 'date');
$query-&gt;addField('sub2', 'data', 'name');
$query = $query
  -&gt;fields('sub1', array('nid', 'sid', 'data'))
  -&gt;fields('sub2', array('data'))
  -&gt;condition('sub1.nid', 32)
  -&gt;condition('sub2.cid', 2)
  -&gt;condition('sub1.cid', 1);


The issue was addField does not return an object so you can't chain the commands together. Also note that even though you aliased the colums to date and name you still need to refer to them as tablename.data. The aliased names will appear in the result of the query.