Extracting user field values from dynamic SQL queries
Assuming your field is a string, the field in the database will be field_first_name_value
Assuming the field is attached to a user entity, the table for that field should be user__field_first_name (2 underscores between user and the field name) your need one more join to get that field value, it's not stored in users_field_data

$database = \Drupal::service('database');

$select = $database-&gt;select('flagging', 'f');
$select-&gt;fields('f', array('uid', 'entity_id'));
$select-&gt;leftJoin('node__field_start_datetime', 'nfds', 'nfds.entity_id = f.entity_id');
$select-&gt;fields('nfds', array('field_start_datetime_value'));
$select-&gt;leftJoin('node_field_data', 'nfd', 'nfd.nid = f.entity_id');
$select-&gt;fields('nfd', array('title'));
$select-&gt;leftJoin('users_field_data', 'ufd', 'ufd.uid = f.uid');
$select-&gt;leftJoin('user__field_first_name', 'uffn', 'uffn.uid = f.uid');
// TODO extract first name
$select-&gt;fields('ufd', ['mail', 'name']);
$select-&gt;fields('uffn', ['field_first_name_value']);

$executed = $select-&gt;execute();
$results = $executed-&gt;fetchAll(\PDO::FETCH_ASSOC);

$username = $result['name'];
$email = $result['mail'];
$first_name = $result['field_first_name_value'];